好贷网好贷款

Hibernate读写Clob和Blob类型字段

发布时间:2016-12-4 22:19:20 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Hibernate读写Clob和Blob类型字段",主要涉及到Hibernate读写Clob和Blob类型字段方面的内容,对于Hibernate读写Clob和Blob类型字段感兴趣的同学可以参考一下。

数据库脚本: create table testcb(id varchar(32) primary key,name varchar(32),photo blob,description text);  Hibernate.cfg.xml             "-//Hibernate/Hibernate Configuration DTD 3.0//EN"           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory>     <property name="connection.username">rootproperty>     <property name="connection.url">         jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312&useUnicode=true     property>     <property name="dialect">         org.hibernate.dialect.MySQLDialect     property>     <property name="myeclipse.connection.profile">mysqlproperty>     <property name="connection.password">1234property>     <property name="connection.driver_class">         com.mysql.jdbc.Driver     property>     <property name="hibernate.dialect">         org.hibernate.dialect.MySQLDialect     property>     <property name="hibernate.show_sql">trueproperty>     <property name="current_session_context_class">threadproperty>     <mapping resource="Search/Clob_Blob/TestCB.hbm.xml" /> session-factory> hibernate-configuration>   POJO:   package Search.Clob_Blob; import java.sql.Blob; import java.sql.Clob; public class TestCB ...{     private String id; //标识id     private String name; //学生姓名     private Blob photo;     private Clob description;     public String getId() ...{         return id;     }     public void setId(String id) ...{         this.id = id;     }     public String getName() ...{         return name;     }     public void setName(String name) ...{         this.name = name;     }     public Blob getPhoto() ...{         return photo;     }     public void setPhoto(Blob photo) ...{         this.photo = photo;     }     public Clob getDescription() ...{         return description;     }     public void setDescription(Clob description) ...{         this.description = description;     }         }   TestCB.hbm.xml   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="Search.fetch" >         <class name="Search.Clob_Blob.TestCB" table="testcb" lazy="true">        <id name="id" column="id" unsaved-value="null">          <generator class="uuid.hex">generator>        id>        <property name="name" column="name" type="string">property>        <property name="photo" column="photo" type="blob">property>        <property name="description" column="description" type="clob">property>              class> hibernate-mapping>   准备一个图片sample.jpg放在Clob_Blob包下   写Blob和Clob测试代码:   package Search.Clob_Blob; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Blob; import java.sql.Clob; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Test ...{     public static void main(String[] args) ...{         String filePath=System.getProperty("user.dir")+File.separator+"src/Search/Clob_Blob"+File.separator+"hibernate.cfg.xml";         File file=new File(filePath);         SessionFactory sessionFactory=new Configuration().configure(file).buildSessionFactory();         Session session=sessionFactory.openSession();         Transaction tx=session.beginTransaction();         try ...{             String imgPath=System.getProperty("user.dir")+File.separator+"src/Search/Clob_Blob"+File.separator+"sample.jpg";             FileInputStream fis=new FileInputStream(imgPath);             Blob photo=Hibernate.createBlob(fis);             Clob description=Hibernate.createClob("this is description");             TestCB testcb=new TestCB();             testcb.setName("tom1");             testcb.setPhoto(photo);             testcb.setDescription(description);             session.save(testcb);             tx.commit();         } catch (FileNotFoundException e) ...{             e.printStackTrace();         } catch (IOException e) ...{             e.printStackTrace();         }                       } } 、 运行后,客户端中可以看到已经成功保存:   运行读取测试代码:   package Search.Clob_Blob; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.sql.Blob; import java.sql.Clob; import java.sql.SQLException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class TestRead ...{     public static void main(String[] args) ...{         String filePath=System.getProperty("user.dir")+File.separator+"src/Search/Clob_Blob"+File.separator+"hibernate.cfg.xml";         File file=new File(filePath);         SessionFactory sessionFactory=new Configuration().configure(file).buildSessionFactory();         Session session=sessionFactory.openSession();         Transaction tx=session.beginTransaction();                  //读取clob和blob         String imgPath=System.getProperty("user.dir")+File.separator+"src/Search/Clob_Blob"+File.separator+"sampleread.jpg";         TestCB testcb=(TestCB)session.get(TestCB.class, "1");         Blob photo=testcb.getPhoto();         Clob description=testcb.getDescription();         try ...{             StringBuffer buffer=new StringBuffer();             Reader reader=(Reader)description.getCharacterStream();             BufferedReader breader=new BufferedReader(reader);             char[] b = new char[60000];//每次获取60K             //将Clob解析成String             int i = 0;             while((i = breader.read(b)) != -1)             ...{                 buffer.append(b,0,i);             }             System.out.println(buffer.toString());                          //将Blob还原成文件             FileOutputStream fos=new FileOutputStream(imgPath);             InputStream  fis1=(InputStream)photo.getBinaryStream();             byte[] b1 = new byte[60];//每次获取60K             int i1 = 0;             while((i1=fis1.read(b1))!=-1)...{                fos.write(b1);             }              } catch (SQLException e) ...{             e.printStackTrace();         } catch (IOException e) ...{             e.printStackTrace();         }         tx.commit();                       } }   结果: Hibernate: select testcb0_.id as id0_0_, testcb0_.name as name0_0_, testcb0_.photo as photo0_0_, testcb0_.description as descript4_0_0_ from testcb testcb0_ where testcb0_.id=? this is description 红色部分为解析的Clob,同时在Clob_Blob下可以看到生成的sampleread.jpg

上一篇:java内存溢出
下一篇:数据结构——串的链式存储

相关文章

相关评论