您的位置:首页 > 大数据

在Hibernate中使用@lob修饰大数据类型的属性

2017-08-07 16:20 344 查看
重点内容:@lob修饰Blob类型的属性

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>



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: