近期 需要操作hibernate把圖片往sql 2005里添加,先搜集下資料。
以下載自http://blog.csdn.net/haofeng82/archive/2007/06/30/1672299.aspx 在此感謝
這里是以sqlserver為例子的 ,oracle的特殊性暫不考慮。
我感覺大字段的保存應(yīng)該有如下幾步:
1 首先你必須得到一個代表上傳文件的數(shù)據(jù)流;
2 需要一張表存儲大字段數(shù)據(jù):包括內(nèi)容,類型(mimetype),這就要看你讀取時如何操作文件了:
如果你想緩存到硬盤上的話可能需要一個文件路徑字段,等等。
3 進行保存操作
假設(shè)你已經(jīng)能夠獲得文件流對象了應(yīng)該是一個inputstream,我們可以編寫下面的代碼保存數(shù)據(jù)到數(shù)據(jù)庫:
tran = session.beginTransaction();
TblEAccessory test=new TblEAccessory();
test.setId("testId");
test.setFileCacheName(ufile.getBaseFileName());
test.setFileExt(ufile.getExt());
//這里沒有設(shè)置mimetype,應(yīng)該設(shè)置的
Blob b = Hibernate.createBlob(ufile.fileItem.getInputStream());
test.setFileContent(b);
session.save(test);
tran.commit();
這里的ufile對象是封裝了fileupload的fileItem的一個類的實例,主要是存儲了上傳文件的流。最關(guān)鍵的是
ufile.fileItem.getInputStream(),得到了文件的流對象,怎么得到并不是這里需要討論的問題。
然后我們創(chuàng)建了一個hibernate 大字段,將值設(shè)置上就行了。
--為什么沒使用oracle作例子,因為好風最近做的項目老是使用sqlserver;再加上聽說oracle的最新驅(qū)動已經(jīng)解決了hibernate大字段的特殊操作,還沒試過,看看。
--使用hibernate進行大字段操作還可以通過自定義類型實現(xiàn),公司里用的就是這個,不過我懶,還是喜歡這種方法