程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> hibernate映射clob blob字段

hibernate映射clob blob字段

編輯:關於JAVA

在許多情況下要存儲大型字符串或者二進制數據如圖片等hibernate也提供了對blob和clob類型的支持

blob采用單字節存儲適合保存二進制數據,如圖片文件clob采用多字節存儲適合保存大型文本等

在mssql中 image和ntext分別對應著blob和clob

表映射文件對兩種類型的寫法

對於blob格式的映射類型為type="java.sql.Clob";

對bean的寫法沒區別直接生成getter和setter

保存一個圖片的二進制內容

User user=new User();
FileInputStream image=new FileInputStream("image.jpg");
Blob img=Hibernate.createBlob(image);
user.setImage(img);
Clob desc=Hibernate.createClob("abcd");
user.setDesc(desc);
save(user);

////保存blob和clob類型完成

讀取:

讀取blob類型二進制數據

Blog img=user.getImage();

InputStream inputs=img.getBinaryStream();//獲取二進制流

寫入文件

FileOutStream fos=new FileOutStream("tempimg.jpg");
byte [] buffer=new byte[102400];
int len;
while((len=inputs.read(buffer))!=-1)
{
fos.write(buffer,0,len);
}
fos.close;
inputs.close;

//oracle執行會出現以下錯誤

streams type cannot be userd in batching

Orcale JDBC不允許流操作以批量方式進行(oracle blob采用流機制作為數據讀寫方式)

user.setImage(Hibernate.createBlob(new byte[1]));
user.setDesc(Hibernate.careteClob(" "));
session.save(user);
session.flush();
session.refresh(user,LockMode.UPGRADE);

向裡面blob寫入實際內容同上

寫入clob

oracle.sql.Clob clob=user.getDesc();
Writer writer=clob.getCharacterOutputStream();
writer.write("abcd");
session.save(user);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved