hibernate 將圖片寫入 oracle blob

來源:互聯網
上載者:User

用JDBC操作Blob最基本的思路是:先插入一條包含空Blob的記錄,然後立即將該條記錄用行鎖定的方式開啟,得到改Blob欄位的引用,從中得到一個輸出資料流,將byte[]資料寫入後提交。hibernate操作的基本思路也是一致的。

 

參考url:

http://biekwo.iteye.com/blog/323393

http://bbs.csdn.net/topics/60009941

 

由於如果不是使用oracle 操作 blob,會報 不支援新特性的錯誤

 

robbin的這篇也可以

http://www.iteye.com/topic/254

 

這是另一個思路,但是我沒有實驗成功

http://bbs.csdn.net/topics/220063661

 

如果報這個錯誤

不允許的操作: streams type cannot be used in batching

參考這個url

http://hsyd.iteye.com/blog/320579

 

My Code

 1 publicint add(User u) { 2  3 // TODO Auto-generated method stub 4  5 try{ 6  7 //擷取資料id 8  9  10 11 u.setId(GetMax());12 //空的blob13 u.setImage(Hibernate.createBlob(newbyte[1]));14 Session session = sessionFactory.openSession();15 16 transaction = session.beginTransaction();17 session.save(u);18 19 session.flush();20 21 session.refresh(u,LockMode.UPGRADE);22 23 //擷取引用24 25 SerializableBlob sb = (SerializableBlob)u.getImage(); 26 27 BLOB blob = (oracle.sql.BLOB)sb.getWrappedBlob();  28 29 OutputStream out =((oracle.sql.BLOB)blob).getBinaryOutputStream(0);30 31  32 33  34 35 File file = new File("/Users/apple/Downloads/project.png"); 36 37 FileInputStream fis = new FileInputStream(file); 38 39     byte[] buff = newbyte[fis.available()]; 40 41     fis.read(buff); 42 43     fis.close(); 44 45     out.write(buff); 46 47     out.close();48 49  50 51 // When done close the streams52 53  54 55 //56 57 session.flush();58 59 //60 61 transaction.commit();62 63 System.out.println("save success");64 65 }catch(Exception e){66 67 System.out.println(e.getMessage());68 69 return 0;70 71 }72 73 return 1;74 75 }

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.