Hibernate Gossip: Blob、Clob
關於Blob、Clob,可以先參考一下 將檔案存入資料庫 這篇文章。 在Hibernate中,您可以直接對Blob、Clob作映射,例如在MySQL中,您的資料庫表格若是這麼建立的:
CREATE TABLE user ( id INT(11) NOT NULL auto_increment PRIMARY KEY, name VARCHAR(100) NOT NULL default '', age INT, photo BLOB, resume TEXT ); 您可以定義一個User類別,並讓屬性包括java.sql.Blob與java.sql.Clob,如下:
package onlyfun.caterpillar; 接著在映射文件中,可以如下定義:
<?xml version="1.0" encoding="utf-8"?> 在進行資料儲存時,可以使用Hibernate.createBlob()與Hibernate.createClob()從來源資料建立Blob與 Clob實例,例如:
FileInputStream fileInputStream = new FileInputStream("c://workspace//photo.jpg"); Blob photo = Hibernate.createBlob(fileInputStream); Clob resume = Hibernate.createClob("Bla....Bla....resume text!!"); User user = new User(); user.setName("caterpillar"); user.setAge(new Integer(30)); user.setPhoto(photo); user.setResume(resume); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); session.save(user); tx.commit(); session.close(); 如果打算從資料庫中取得資料,則一個範例如下所示:
Session session = sessionFactory.openSession(); User user = (User) session.load(User.class, new Integer(1)); System.out.print(user.getAge() + "/t" + user.getName() + "/t"); String resume = user.getResume().getSubString(1, (int) user.getResume().length()); System.out.println(resume); // 將Blob資料寫到檔案 InputStream inputStream = user.getPhoto().getBinaryStream(); FileOutputStream fileOutputStream = new FileOutputStream("c://workspace//photo_save.jpg"); byte[] buf = new byte[1]; int len = 0; while((len = inputStream.read(buf)) != -1) { fileOutputStream.write(buf, 0, len); } inputStream.close(); fileOutputStream.close(); System.out.println("save photo to c://workspace//photo_save.jpg"); session.close(); |
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9750319131714390&dt=1186733260578&lmt=1175337892&format=160x600_as&output=html&correlator=1186733260562&url=http%3A%2F%2Fcaterpillar.onlyfun.net%2FGossip%2FHibernateGossip%2FBlobClob.html&ad_type=text_image&ref=http%3A%2F%2Fwww.javaworld.com.tw%2Fjute%2Fpost%2Fview%3Fage%3D0%26bid%3D54%26id%3D186815&cc=365&ga_vid=127855932.1186733261&ga_sid=1186733261&ga_hid=2034078190&flash=8&u_h=768&u_w=1024&u_ah=736&u_aw=1024&u_cd=16&u_tz=480&u_java=true" frameborder="0" width="160" scrolling="no" height="600" allowtransparency="allowtransparency"> <script type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-9750319131714390&dt=1186733260687&lmt=1175337892&prev_fmts=160x600_as&format=160x600_as&output=html&correlator=1186733260562&url=http%3A%2F%2Fcaterpillar.onlyfun.net%2FGossip%2FHibernateGossip%2FBlobClob.html&ad_type=text_image&ref=http%3A%2F%2Fwww.javaworld.com.tw%2Fjute%2Fpost%2Fview%3Fage%3D0%26bid%3D54%26id%3D186815&cc=365&ga_vid=127855932.1186733261&ga_sid=1186733261&ga_hid=2034078190&flash=8&u_h=768&u_w=1024&u_ah=736&u_aw=1024&u_cd=16&u_tz=480&u_java=true" frameborder="0" width="160" scrolling="no" height="600" allowtransparency="allowtransparency"> |