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文件。

时间: 2024-10-08 14:07:20

hibernate_05_单表操作_对象类型的相关文章

hibernate课程 初探单表映射3-3 对象类型

本节简介: 1 简介对象类型(重点是音视频blob类型) 2 demo(对图片的写入数据库与读取) 1 简介对象类型 映射类型 java类型 标准sql类型 mysql类型 oracle类型 binary byte[] varchar blob blob text(大文本类型) java.lang.String clob text   clob clob(大文本类型)    java.sql.Clob clob text clob blob(二进制数据类型)  java.sql.Blob blo

hibernate_06_单表操作_增删改操作

首先,创建类对象 1 package com.imooc.hibernate; 2 3 public class Address { 4 5 private String postcode; //邮编 6 private String phone; //电话 7 private String address; //地址 8 9 public Address() {}; 10 11 public String getPostcode() { 12 return postcode; 13 } 14

hibernate_06_单表操作_组件属性

什么是组件属性? 比如address是students的其中一个属性,而address又有三个属性:邮编.电话和地址.address就是hibernate的组件属性. 首先建立Address类: 1 package com.imooc.hibernate; 2 3 public class Address { 4 5 private String postcode; //邮编 6 private String phone; //电话 7 private String address; //地址

09-hibernate单表操作(1)

1,单一主键 2,基本类型 3,对象类型 4,组件属性 5,单表操作 单一主键 常用生成策略: assigned 有程序员生成(手工) native 由数据库底层,如果是mysql是increment,如果是Oracle是sequence. 测试assigned :代码手动给他赋值,不给ID赋值 import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.

Django开发:(3.1)ORM:单表操作

MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是"对象-关系-映射"的简称. Mysql中的表对应python中的类,表的字段对应类的属性,表的记录对应类的实例化的对象 单表操作 创建表 1. 创建模型 创建名为app01的app,在app01下的models.py中创建模型: from dj

17-2 orm单表操作和多表操作

参考:https://www.cnblogs.com/liwenzhou/p/8660826.html 一  ORM单表操作 1 增删改查 1 1. 查询 2 1. 查所有 3 models.Publisher.objects.all() 4 2. 查某个具体的记录 5 models.Publisher.objects.get(id=1) --> 注意查询条件不成立就报错 6 2. 删除一条记录 7 models.Publisher.objects.get(id=1).delete() 8 3.

母版,单表操作

上节回顾:(模板层) 1 模板之变量---{{ }} -支持数字,字符串,布尔类型,列表,字典---相当于对它进行了打印 -函数--->相当于加括号运行(不能传参数) -对象--->内存地址,(如果重写__str__方法,打印的就是返回的内容) 2 过滤器 -length---计算长度 -default----设默认值 -filesizeformat---把数字转成文件大小格式 -截断字符---最少是三 -截断单词 -data----格式化日期类型 -add-----数字,字符串相加 -sli

model,单表操作

一. model Django提供了一个抽象层(“Model”)来构建和管理Web应用程序的数据. django中遵循 Code Frist 的原则,即:根据代码中定义的类来自动生成数据库表. 关系对象映射(Object Relational Mapping,简称ORM),  它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动. 二. 单表操作 <一>. 表的创建

Django框架05 /orm单表操作

目录 Django框架05 /orm单表操作 昨日内容回顾 今日内容 orm单表操作 对象关系映射(object relational mapping) 1.orm介绍 2.增: 3.时间问题 4.删 5.改 6.批量插入 -- bulk_create 7.查询api 8.基于双下划线的模糊查询 -- filter双下划线查询 9.总结 总结1 总结2 Django框架05 /orm单表操作 昨日内容回顾 模板相关 模板继承(母版继承) 1. 创建一个xx.html页面(作为母版,其他页面来继承