博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate学习四----------Blob
阅读量:4541 次
发布时间:2019-06-08

本文共 4863 字,大约阅读时间需要 16 分钟。

© 版权声明:本文为博主原创文章,转载请注明出处

 实例

1.项目结构

2.pom.xml

4.0.0
org.hibernate
Hibernate-Image
war
0.0.1-SNAPSHOT
Hibernate-Image Maven Webapp
http://maven.apache.org
UTF-8
5.1.6.Final
junit
junit
4.12
test
org.hibernate
hibernate-core
${hibernate.version}
mysql
mysql-connector-java
5.1.42
Hibernate-Image

3.Student.java

package org.hibernate.model;import java.sql.Blob;import java.util.Date;public class Student {	private long sid;// 学号	private String sname;// 姓名	private String gender;// 性别	private Date birthday;// 生日	private String address;// 性别	private Blob image;// 头像	public Student() {	}	public Student(String sname, String gender, Date birthday, String address, Blob image) {		this.sname = sname;		this.gender = gender;		this.birthday = birthday;		this.address = address;		this.image = image;	}	public long getSid() {		return sid;	}	public void setSid(long sid) {		this.sid = sid;	}	public String getSname() {		return sname;	}	public void setSname(String sname) {		this.sname = sname;	}	public String getGender() {		return gender;	}	public void setGender(String gender) {		this.gender = gender;	}	public Date getBirthday() {		return birthday;	}	public void setBirthday(Date birthday) {		this.birthday = birthday;	}	public String getAddress() {		return address;	}	public void setAddress(String address) {		this.address = address;	}	public Blob getImage() {		return image;	}	public void setImage(Blob image) {		this.image = image;	}}

4.Student.hbm.xml

5.hibernate.cfg.xml

root
***
com.mysql.jdbc.Driver
jdbc:mysql:///hibernate?useSSL=true&characterEncoding=UTF-8
update
true
true
org.hibernate.dialect.MySQL5InnoDBDialect

6.ImageTest.java

package org.hibernate.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.sql.Blob;import java.util.Date;import org.hibernate.Hibernate;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.model.Student;import org.junit.After;import org.junit.Before;import org.junit.Test;public class ImageTest {	private SessionFactory sessionFactory;	private Session session;	private Transaction transaction;		@Before	public void before() {				Configuration config = new Configuration().configure();// 创建配置对象		sessionFactory = config.buildSessionFactory();// 创建SessionFactory对象		session = sessionFactory.openSession();// 创建session对象		transaction = session.beginTransaction(); // 开启事务			}		@After	public void after() {				transaction.commit();// 提交事务		session.close();// 关闭session		sessionFactory.close();// 关闭SessionFactory			}		@Test	public void saveStudentWithImage() throws Exception {				// 获取图片文件		File file = new File("C:/Users/chen/Pictures/demo.jpg");		// 获取图片文件的输入流		InputStream is = new FileInputStream(file);		// 创建一个Blob对象		Blob image = Hibernate.getLobCreator(session).createBlob(is, is.available());		// 创建Student对象		Student s = new Student("张三", "男", new Date(), "北京市", image);		// 保存对象		session.save(s);			}		@Test	public void readImage() throws Exception {				Student s = session.get(Student.class, 1L);		// 获取图片的Blob对象		Blob image = s.getImage();		// 获取照片的输入流		InputStream is = image.getBinaryStream();		// 创建输出文件		File file = new File("C:/Users/chen/Pictures/test.jpg");		// 获取输出流		OutputStream os = new FileOutputStream(file);		// 创建缓存区		byte[] buff = new byte[is.available()];		// 将输入流读入到缓存中		is.read(buff);		// 将缓存区数据写到输出流中		os.write(buff);		// 关闭输入流		is.close();		// 关闭输出流		os.close();			}	}

7.效果预览

  7.1 执行saveStudentWithImage()方法

  7.2 执行readImage()方法

参考:

转载于:https://www.cnblogs.com/jinjiyese153/p/6905111.html

你可能感兴趣的文章
Spring Cloud和Spring Boot的区别
查看>>
jquery实现图片上传前本地预览
查看>>
C# — 题库答案汇总
查看>>
docker居然需要3.10以上的内核
查看>>
Win10下安装zookeeper
查看>>
客户端用JavaScript填充DropDownList控件,服务器端读不到值
查看>>
Dubbo源码学习--服务是如何引用的
查看>>
【转】C#安装字体到系统
查看>>
Android视频播放之VideoView
查看>>
非对称加密
查看>>
位运算巧用
查看>>
display:flex布局
查看>>
利用反射跟自定义注解拼接实体对象的查询SQL
查看>>
JQuery Ajax Options
查看>>
整体二分专题
查看>>
Python执行Linux系统命令的4种方法
查看>>
09 mongoDB基础(进阶)
查看>>
Xenomai PC开发环境
查看>>
spring-c3p0-01
查看>>
浏览器
查看>>