hibernate雖然對多種數據庫進行了適應以達到前台感受不到後台的數據庫類型 但是在 Blob 和 Clob 這兩種類型的存取方面不同的數據庫有不同的實現方法這方面 hibernate 就實在沒辦法了在 mssql 中還好實現起來比較簡單但是我現在要說的是 超級麻煩的 Oracle 我做的項目采用的數據庫就是 Oracle 不容質疑Oracle的確是最好的數據庫但是有些地方太復雜
使用 hibernate 讀取 Clob 和 Blob 是跟往常一樣的主要是保存
具體的流程如下
先創建一個只有一個字節的 Blob
使用 flush 方法強勢 hibernate 保存這個只有一個字節的 Blob
通過保存獲得了一個游標
使用這個游標來保存真正的數據對數據庫實施 update 操作
具體實現代碼如下
TUser user = new TUser();
usersetImage(HibernatecreateBlob(new byte[]));
Transaction ex = sessionbeginTransaction();
sessionsave(user);
//強制保存這個blob
sessionflush();
//通過刷新 user 來獲得blob游標
sessionrefresh(userLockModeUPGRADE);
//寫入真正的實際內容
oraclesqlBLOB blob = (oraclesqlBLOB)usergetImge();
OutputStream out = blobgetBinaryOutputStream();
FileInputStream img = new FileInputStream(c:\aaajpg);
byte[] buf = new byte[];
int len;
while((len = imgread(buf)) > )
{
outwrite(buflen);
}
imgclose();
outclose();
mit();
Clob 也是一樣的
只是創建的是一個空格的 String
user
setResume(Hibernate
createClob(
))
From:http://tw.wingwit.com/Article/program/Java/ky/201311/27871.html