在Hibernate中使用@lob修饰大数据类型的属性
2017-08-07 16:20
344 查看
重点内容:@lob修饰Blob类型的属性
1.使用hibernate如何读取和保存图片信息?
代码如下:
1.使用hibernate如何读取和保存图片信息?
代码如下:
1.持久化类 package cn.codekong.entity; import java.sql.Blob; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; @Entity //表示该类是一个持久化类 @Table(name="test3" ,schema="hibernate") //表示Students类映射到数据库中的对应的表名为t_StuInfo public class Students{ @Id @GeneratedValue private int sid; @Lob @Column(length=8) private Blob pic; public Students(){ } public Students(int sid, Blob pic) { super(); this.sid = sid; this.pic = pic; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public Blob getPic() { return pic; } public void setPic(Blob image) { this.pic = image; } } 2.测试类 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Blob; import java.sql.SQLException; import org.hibernate.Hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.service.ServiceRegistry; import org.junit.After; import org.junit.Before; import org.junit.Test; import cn.codekong.entity.Students; public class StudentsTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { // 创建服务注册对象 ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().configure().build(); // 创建会话工厂对象 sessionFactory = new MetadataSources(serviceRegistry).buildMetadata().buildSessionFactory(); // 会话对象 session = sessionFactory.openSession(); // 开启事物 tr c67c ansaction = session.beginTransaction(); } @After public void destory() { // 提交事物 transaction.commit(); // 关闭会话 session.close(); // 关闭会话工厂 sessionFactory.close(); } @Test public void testSaveStudentsPicture() throws FileNotFoundException, IOException { Students s = new Students(); // 获取图片 File f = new File("d:" + File.separator + "1.png"); // 获取图片输入流 InputStream input = new FileInputStream(f); // 创建Blob对象 Blob image = Hibernate.getLobCreator(session).createBlob(input, input.available()); s.setPic(image); // 保存图片 session.save(s); } @Test public void testReadStudentsPicture() throws FileNotFoundException, IOException, SQLException { Students s = session.get(Students.class, 1); Blob image = s.getPic(); // 获取图片输入流 InputStream input = image.getBinaryStream(); File f = new File("d:" + File.separator + "2.png"); OutputStream output = new FileOutputStream(f); // 创建缓冲区 byte[] buff = new byte[input.available()]; input.read(buff); output.write(buff); input.close(); output.close(); } } 3.配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 配置连接数据库 --> <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property> <!-- 配置方言是非常重要!!!我这里配置的为MySQL5Dialect --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 配置C3P0连接池 --> <property name="hibernate.c3p0.max_size">200</property> <property name="hibernate.c3p0.min_size">2</property> <property name="hibernate.c3p0.max_statements">50</property> <property name="hibernate.c3p0.timeout"></property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <!-- 配置映射文件 --> <property name="hibernate.current_session_context_class">thread</property> <mapping class="cn.codekong.entity.Students"/> </session-factory> </hibernate-configuration>
相关文章推荐
- 使用hibernate和mysql生成数据表时,类型为string的属性对应的数据列不能插入汉字
- 【Hibernate学习笔记-5.2】使用@Temporal修饰日期类型的属性
- Hibernate中使用@Temporal修饰日期类型的属性
- 使用Spring+Hibernate实现Oracle数据库BlOB数据类型的读写
- Hibernate3.2(8):映射文件Xxx.hbm.xml使用的Hibernate中的数据类型
- 使用 hibernate 存取大对象数据类型(clob和blob)
- Java中基本数据类型和包装数据类型在Hibernate中使用
- 在Struts中使用JavaBean和List(多行数据)类型属性
- 【Hibernate学习笔记-5.1】使用@Transient修饰不想持久保存的属性
- swift中的如果在构造方法中使用KVC, 调用了super.init(), 报错, 基本数据类型属性找不到
- 使用 hibernate 存取大对象数据类型(clob和blob)
- hibernate使用mysql中时间的数据类型
- mysql之数据类型和修饰属性
- 在Struts中使用JavaBean和List(多行数据)类型属性
- ORACLE数据库number类型使用hibernate反向生成JavaBean的数据类型
- 在Struts中使用JavaBean和List(多行数据)类型属性
- 使用Hibernate如何在Oracle中插入Date类型的数据
- Java中基本数据类型和包装数据类型在Hibernate中使用
- 在Struts中使用JavaBean和List(多行数据)类型属性-JSP教程,Java技巧及代码
- 关于在Hibernate、Struts2中使用Clob数据类型