hibernate_05_单表操作_对象类型

Posted tzzt01

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate_05_单表操作_对象类型相关的知识,希望对你有一定的参考价值。

本篇使用hibernate输出一个对象(图片)

先写一个java类

 1 package com.imooc.hibernate;
 2 
 3 import java.sql.Blob;
 4 import java.util.Date;
 5 
 6 public class Students {
 7 
 8     private int sid;
 9     private String sname;
10     private String gender;
11     private Date birthday;
12     private String address;
13     private Blob picture;
14     
15     public Blob getPicture() {
16         return picture;
17     }
18 
19     public void setPicture(Blob picture) {
20         this.picture = picture;
21     }
22 
23     public Students() {}
24 
25     public Students(int sid, String sname, String gender, Date birthday, String address) {
26         super();
27         this.sid = sid;
28         this.sname = sname;
29         this.gender = gender;
30         this.birthday = birthday;
31         this.address = address;
32     }
33 
34     @Override
35     public String toString() {
36         return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", birthday=" + birthday
37                 + ", address=" + address + "]";
38     }
39 
40     public int getSid() {
41         return sid;
42     }
43 
44     public void setSid(int sid) {
45         this.sid = sid;
46     }
47 
48     public String getSname() {
49         return sname;
50     }
51 
52     public void setSname(String sname) {
53         this.sname = sname;
54     }
55 
56     public String getGender() {
57         return gender;
58     }
59 
60     public void setGender(String gender) {
61         this.gender = gender;
62     }
63 
64     public Date getBirthday() {
65         return birthday;
66     }
67 
68     public void setBirthday(Date birthday) {
69         this.birthday = birthday;
70     }
71 
72     public String getAddress() {
73         return address;
74     }
75 
76     public void setAddress(String address) {
77         this.address = address;
78     }
79 }

创建Students.hbm.xml文件

 1 <?xml version="1.0"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 4 <!-- Generated 2017-5-23 0:24:09 by Hibernate Tools 3.5.0.Final -->
 5 <hibernate-mapping>
 6     <class name="com.imooc.hibernate.Students" table="STUDENTS">
 7         <id name="sid" type="int">
 8             <column name="SID" />
 9             <generator class="native" />
10         </id>
11         <property name="sname" type="java.lang.String">
12             <column name="SNAME" />
13         </property>
14         <property name="gender" type="java.lang.String">
15             <column name="GENDER" />
16         </property>
17         <property name="birthday" type="java.util.Date">
18             <column name="BIRTHDAY" />
19         </property>
20         <property name="address" type="java.lang.String">
21             <column name="ADDRESS" />
22         </property>
23         <property name="picture" type="java.sql.Blob">
24             <column name="PICTURE" />
25         </property>
26     </class>
27 </hibernate-mapping>

创建hibernate.cfg.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 <hibernate-configuration>
 6     <session-factory>
 7         <property name="connection.username">root</property>
 8         <property name="connection.password">root</property>
 9         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
10         <property name="connection.url">jdbc:mysql://localhost:3306/hibernate?useUnicode=true&amp;characterEncoding=UTF-8</property>
11         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
12         <property name="show_sql">true</property>
13         <property name="format_sql">true</property>
14         <property name="hbm2ddl.auto">update</property>
15         
16         <mapping resource="com/imooc/hibernate/Students.hbm.xml"/>
17     </session-factory>
18 </hibernate-configuration>

创建测试类

 1 package com.icoom.test;
 2 import java.io.File;
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 import java.io.InputStream;
 6 import java.io.OutputStream;
 7 import java.sql.Blob;
 8 import java.util.Date;
 9 
10 import org.hibernate.Hibernate;
11 import org.hibernate.Session;
12 import org.hibernate.SessionFactory;
13 import org.hibernate.Transaction;
14 import org.hibernate.cfg.Configuration;
15 import org.hibernate.service.ServiceRegistry;
16 import org.hibernate.service.ServiceRegistryBuilder;
17 import org.junit.After;
18 import org.junit.Before;
19 import org.junit.Test;
20 
21 import com.imooc.hibernate.Students;
22 
23 public class StudentsTest {
24     
25     private SessionFactory sessionFactory;
26     private Session session;
27     private Transaction transaction;
28 
29     @Before
30     public void init() {
31         // 1.创建配置对象
32         Configuration config = new Configuration().configure();
33         // 2.创建服务注册对象
34         ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();
35         // 3.创建会话工厂对象
36         sessionFactory = config.buildSessionFactory(serviceRegistry);
37         // 会话对象
38         session = sessionFactory.openSession();
39         // 开启事务
40         transaction = session.beginTransaction();
41     }
42     @After
43     public void destory() {
44         transaction.commit(); //提交事务
45         session.close(); //关闭session
46         sessionFactory.close();//关闭会话工厂
47     }
48 
49     
50     /**
51      * 使用hibernate输出对象
52      * @throws Exception
53      */
54     @Test
55     public void testReadBlob() throws Exception {
56         Students s = (Students)session.get(Students.class, 1);
57         // 获得Blob对象
58         Blob image = s.getPicture();
59         // 获得照片的输入流
60         InputStream input = image.getBinaryStream();
61         // 创建输出流
62         File f = new File("d:" + File.separator + "out龙猫.jpg");
63         // 获得输出流
64         OutputStream output = new FileOutputStream(f);
65         // 创建缓冲区
66         byte[] buff = new byte[input.available()];
67         input.read(buff);
68         output.write(buff);
69         input.close();
70         output.close();
71     }
72 }

执行成功,在D盘根目录中就会出现out龙猫.jpg文件。

以上是关于hibernate_05_单表操作_对象类型的主要内容,如果未能解决你的问题,请参考以下文章

hibernate_06_单表操作_组件属性

母版,单表操作

09-hibernate单表操作

hibernate query返回的list 里面的对象都是Object 无法转换成我要的类型

EJB_开发单表映射的实体bean

Hibernate__级联操作struts+hibernate+接口编程架构