zoukankan      html  css  js  c++  java
  • Hibernate学习四----------Blob

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

     实例

    1.项目结构

    2.pom.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      
    	<modelVersion>4.0.0</modelVersion>
    	
    	<groupId>org.hibernate</groupId>
    	<artifactId>Hibernate-Image</artifactId>
    	<packaging>war</packaging>
    	<version>0.0.1-SNAPSHOT</version>
    	<name>Hibernate-Image Maven Webapp</name>
    	<url>http://maven.apache.org</url>
    	
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<hibernate.version>5.1.6.Final</hibernate.version>
    	</properties>
    	
    	<dependencies>
    		<!-- junit -->
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.12</version>
    			<scope>test</scope>
    		</dependency>
    		<!-- hibernate -->
    		<dependency>
    		    <groupId>org.hibernate</groupId>
    		    <artifactId>hibernate-core</artifactId>
    		    <version>${hibernate.version}</version>
    		</dependency>
    		<!-- MySQL -->
    		<dependency>
    		    <groupId>mysql</groupId>
    		    <artifactId>mysql-connector-java</artifactId>
    		    <version>5.1.42</version>
    		</dependency>
    	</dependencies>
      <build>
        <finalName>Hibernate-Image</finalName>
      </build>
    </project>
    

    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

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd" >
    <hibernate-mapping>
    
    	<class name="org.hibernate.model.Student" table="STUDENT">
    		<id name="sid" type="java.lang.Long">
    			<column name="SID"/>
    			<generator class="native"/>
    		</id>
    		<property name="sname" type="java.lang.String">
    			<column name="SNAME"/>
    		</property>
    		<property name="gender" type="java.lang.String">
    			<column name="GENDER"/>
    		</property>
    		<property name="birthday" type="date">
    			<column name="BIRTHDAY"/>
    		</property>
    		<property name="address" type="java.lang.String">
    			<column name="ADDRESS"/>
    		</property>
    		<property name="image" type="java.sql.Blob">
    			<column name="IMAGE"/>
    		</property>
    	</class>
    
    </hibernate-mapping>
    

    5.hibernate.cfg.xml

    <?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>
    
    	<!-- SessionFactory配置 -->
    	<session-factory>
    		<!-- 数据库连接配置 -->
    		<property name="connection.username">root</property>
    		<property name="connection.password">***</property>
    		<property name="connection.drvier_class">com.mysql.jdbc.Driver</property>
    		<property name="connection.url">
    			jdbc:mysql:///hibernate?useSSL=true&amp;characterEncoding=UTF-8
    		</property>
    		
    		<!-- 基本配置 -->
    		<property name="hbm2ddl.auto">update</property>
    		<property name="show_sql">true</property>
    		<property name="format_sql">true</property>
    		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
    		
    		<!-- 引用映射文件 -->
    		<mapping resource="hbm/Student.hbm.xml"/>
    	</session-factory>
    
    </hibernate-configuration>
    

    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()方法

    参考:http://www.imooc.com/video/7740

  • 相关阅读:
    linux advancing program signal [copy]
    advacing lnux program zombie process [copy]
    Devpress.XtraGrid.GridControl 笔记(转载)
    嵌入别的程序到winform(C#)
    GridControl控件使用小结
    .net 时间类型的一小bug ToShortDateString()
    gridControl repositoryItemLookUpEdit控件使用
    .net架构的最后思考(箴言)
    VS项目引用,无法更新
    关于ZendOptimizer和wamp的phpmyadmin冲突问题
  • 原文地址:https://www.cnblogs.com/jinjiyese153/p/6905111.html
Copyright © 2011-2022 走看看