<?xml version="1.0" encoding="UTF-8"?><!-- generator="bbPress" -->

<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
>

<channel>
<title>~SingleForum~无废话记录~ Topic: Hibernate操作BLOB</title>
<link>http://www.ll19.com/bb/</link>
<description>~19~记录点有用的好吗？少说废话少装b~</description>
<language>en</language>
<pubDate>Tue, 07 Feb 2012 09:18:33 +0000</pubDate>

<item>
<title>admin on "Hibernate操作BLOB"</title>
<link>http://www.ll19.com/bb/topic/106#post-106</link>
<pubDate>Sun, 03 Jan 2010 16:10:53 +0000</pubDate>
<dc:creator>admin</dc:creator>
<guid isPermaLink="false">106@http://www.ll19.com/bb/</guid>
<description>&#60;p&#62;这是Cat对象定义&#60;br /&#62;
　　package com.fankai;&#60;br /&#62;
　　import java.sql.Blob;&#60;br /&#62;
　　public class Cat {&#60;br /&#62;
　　private String id;&#60;br /&#62;
　　private String name;&#60;br /&#62;
　　private char sex;&#60;br /&#62;
　　private float weight;&#60;br /&#62;
　　private Blob image;&#60;br /&#62;
　　public Cat() { }&#60;br /&#62;
　　public String getId() { return id; }&#60;br /&#62;
　　public void setId(String id) { this.id = id; }&#60;br /&#62;
　　public String getName() { return name; }&#60;br /&#62;
　　public void setName(String name) { this.name = name; }&#60;br /&#62;
　　public char getSex() { return sex; }&#60;br /&#62;
　　public void setSex(char sex) { this.sex = sex; }&#60;br /&#62;
　　public float getWeight() { return weight; }&#60;br /&#62;
　　public void setWeight(float weight) { this.weight = weight; }&#60;br /&#62;
　　public Blob getImage() { return image; }&#60;br /&#62;
　　public void setImage(Blob image) { this.image = image;}&#60;br /&#62;
　　} &#60;/p&#62;
&#60;p&#62;　　这是Cat.hbm.xml &#60;/p&#62;
&#60;p&#62;　　＜?xml version=&#34;1.0&#34;?＞&#60;br /&#62;
　　＜!DOCTYPE hibernate-mapping SYSTEM &#34;http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd&#34;＞ &#60;/p&#62;
&#60;p&#62;　　＜hibernate-mapping＞&#60;br /&#62;
　　＜class name=&#34;com.fankai.Cat&#34; table=&#34;cat&#34;＞&#60;br /&#62;
　　＜!--jcs-cache usage=&#34;read-only&#34;/--＞&#60;br /&#62;
　　＜id name=&#34;id&#34; unsaved-value=&#34;null&#34;＞&#60;br /&#62;
　　＜generator class=&#34;uuid.hex&#34;/＞&#60;br /&#62;
　　＜/id＞&#60;br /&#62;
　　＜property name=&#34;name&#34; length=&#34;16&#34; not-null=&#34;true&#34;/＞&#60;br /&#62;
　　＜property name=&#34;sex&#34; length=&#34;1&#34; not-null=&#34;true&#34;/＞&#60;br /&#62;
　　＜property name=&#34;weight&#34; /＞&#60;br /&#62;
　　＜property name=&#34;image&#34; /＞&#60;br /&#62;
　　＜/class＞&#60;br /&#62;
　　＜/hibernate-mapping＞ &#60;/p&#62;
&#60;p&#62;　　下面是完整的用Hibernate写入Blob的例子，相比JDBC，已经简单轻松多了，也不用写那些Oracle特殊的sql了： &#60;/p&#62;
&#60;p&#62;　　package com.fankai;&#60;br /&#62;
　　import java.sql.Blob;&#60;br /&#62;
　　import net.sf.hibernate.*;&#60;br /&#62;
　　import oracle.sql.*;&#60;br /&#62;
　　import java.io.*;&#60;br /&#62;
　　public class TestCatHibernate {&#60;br /&#62;
　　public static void testBlob() {&#60;br /&#62;
　　Session s = null;&#60;br /&#62;
　　byte[] buffer = new byte[1];&#60;br /&#62;
　　buffer[0] = 1;&#60;br /&#62;
　　try {&#60;br /&#62;
　　　SessionFactory sf = HibernateSessionFactory.getSessionFactory();&#60;br /&#62;
　　　s = sf.openSession();&#60;br /&#62;
　　　Transaction tx = s.beginTransaction();&#60;br /&#62;
　　　Cat c = new Cat();&#60;br /&#62;
　　　c.setName(&#34;Robbin&#34;);&#60;br /&#62;
　　　c.setImage(Hibernate.createBlob(buffer));&#60;br /&#62;
　　　s.save(c);&#60;br /&#62;
　　　s.flush();&#60;br /&#62;
　　　s.refresh(c, LockMode.UPGRADE);&#60;br /&#62;
　　　BLOB blob = (BLOB) c.getImage();&#60;br /&#62;
　　　OutputStream out = blob.getBinaryOutputStream();&#60;br /&#62;
　　　String fileName = &#34;oraclejdbc.jar&#34;;&#60;br /&#62;
　　　File f = new File(fileName);&#60;br /&#62;
　　　FileInputStream fin = new FileInputStream(f);&#60;br /&#62;
　　　int count = -1, total = 0;&#60;br /&#62;
　　　byte[] data = new byte[(int)fin.available()];&#60;br /&#62;
　　　fin.read(data);&#60;br /&#62;
　　　out.write(data);&#60;br /&#62;
　　　fin.close();&#60;br /&#62;
　　　out.close();&#60;br /&#62;
　　　s.flush();&#60;br /&#62;
　　　tx.commit();&#60;br /&#62;
　　} catch (Exception e) {&#60;br /&#62;
　　　System.out.println(e.getMessage());&#60;br /&#62;
　　} finally {&#60;br /&#62;
　　　if (s != null)&#60;br /&#62;
　　　try {&#60;br /&#62;
　　　　s.close();&#60;br /&#62;
　　　} catch (Exception e) {}&#60;br /&#62;
　　}&#60;br /&#62;
　　}&#60;br /&#62;
　　}
&#60;/p&#62;</description>
</item>

</channel>
</rss>

