一 对象类型
二 将图片写入数据库
1、Students
import java.sql.Blob;
import java.util.Date;
//学生类
public class Students {
/*
* JavaBeans的四点原则
* 1.必须是公有的类
* 2.提供公有的不带参数的默认的构造方法
* 3.属性私有
* 4.属性setter/getter封装
*/
private int sid; // 学号
private String sname; // 姓名
private String gender; // 性别
private Date birthday; // 出生日期
private String address; // 地址
private Blob picture;//照片
public Blob getPicture() {
return picture;
}
public void setPicture(Blob picture) {
this.picture = picture;
}
public Students() {
}
public Students(int sid, String sname, String gender, Date birthday,
String address) {
// super();
this.sid = sid;
this.sname = sname;
this.gender = gender;
this.birthday = birthday;
this.address = address;
}
public int getSid() {
return sid;
}
public void setSid(int 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;
}
@Override
public String toString() {
return "Students [sid=" + sid + ", sname=" + sname + ", gender="
+ gender + ", birthday=" + birthday + ", address=" + address
+ "]";
}
}
2、hibernate.cfg.xml配置
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<!-- Generated 2017-9-17 10:33:28 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
<class name="Students" table="STUDENTS">
<id name="sid" type="int">
<column name="SID" />
<generator class="native" />
<!-- <generator class="assigned" />-->
</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="timestamp">
<column name="BIRTHDAY" />
</property>
<property name="address" type="java.lang.String">
<column name="ADDRESS" />
</property>
<property name="picture" type="java.sql.Blob">
<column name="PICTURE" />
</property>
</class>
</hibernate-mapping>
3、测试方法
@Test
public void testWriteBlog() throws Exception{
Students s= new Students(1,"张三丰","男",new Date(),"武当山");
//先获得照片文件
File f = new File("E:"+File.separator+"1.png");
//获得照片文件的输入流
InputStream input = new FileInputStream(f);
//创建一个Blob对象
Blob image = Hibernate.getLobCreator(session).createBlob(input, input.available());
//设置照片属性
s.setPicture(image);
session.save(s);
}
4、测试结果
三 将图片从数据库读出
1、测试方法
@Test
public void testReadBlog() throws Exception{
Students s= (Students)session.get(Students.class, 1);
//获得Blob对象
Blob image = s.getPicture();
//获得照片的输入流
InputStream input = image.getBinaryStream();
//创建文件
File f = new File("E:"+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();
}
2、测试结果
相关推荐
总结来说,理解并掌握Java数据类型与Hibernate的映射关系,是使用Hibernate进行数据库操作的基础。这涉及到对Java基本类型、复杂类型以及自定义对象的映射,还包括对数据库NULL值的处理、对象关系映射以及工具的使用...
Hibernate 是一个流行的 Java ORM(对象关系映射)框架,它允许开发者用面向对象的方式操作数据库,将数据模型与数据库结构解耦,简化了数据库操作。通过 Hibernate,开发者可以避免编写大量的 SQL 代码,提高开发...
进行表关联操作时,Hibernate允许我们在实体类层面定义这些关系,然后在程序中直接操作对象,而不是SQL语句。这样不仅可以提高开发效率,还使得代码更加面向对象。例如,要添加一个新的订单,我们只需要创建一个`...
Hibernate使用自己的数据类型映射机制,将Java对象转化为SQL语句,以操作数据库。而SQL(结构化查询语言)是用于管理关系数据库的标准语言,它有自己的数据类型系统,如INT、VARCHAR、DATE等。 当我们在使用...
要将本地SQL查询的结果封装成对象,我们首先需要定义一个映射文件(.hbm.xml),在这个文件中,我们需要指定查询返回的对象类型以及字段与数据库列的对应关系。例如: ```xml <hibernate-mapping> ...
Hibernate是Java领域中一款广泛应用的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库,大大简化了数据库编程。在Hibernate中,级联操作(Cascading Operations)是一种高级特性,它使得对象...
Hibernate简化了Java应用程序与数据库之间的交互,它允许我们将Java对象直接映射到数据库中的表。理解Hibernate映射类型与Java类型的对应关系对于有效地使用Hibernate至关重要。 首先,我们来看一下基本数据类型的...
它使得开发者能够用面向对象的方式来操作数据库,简化了数据库编程的过程。以下是对hibernate中几种对象关系模型的详细解释: 1. **依赖**: 在Java中,依赖关系可以通过类的实例方法参数来体现,如示例中的`...
在Java世界中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者将数据库操作与业务逻辑解耦,通过面向对象的方式处理数据。在实际项目开发中,有时我们可能需要对数据库中的某些字段使用自定义的...
11.1.3 Java大对象类型的Hibernate映射类型 11.1.4 JDK自带的个别Java类的Hibernate映射类型 11.1.5 使用Hibernate内置映射类型 11.2 客户化映射类型 11.2.1 用客户化映射类型取代Hibernate组件 11.2.2 ...
在Java的持久化框架中,Hibernate是一个广泛使用的ORM(对象关系映射)工具,它允许开发者用面向对象的方式来处理数据库操作。在实际的业务场景中,数据往往不是孤立存在的,而是存在于多个关联的表中。因此,多表...
当我们发现Hibernate默认的数据类型无法满足我们存储数据的特殊要求时,例如需要处理复杂对象或者自定义逻辑时,就可以通过自定义类型进行解决。 自定义类型主要有两种实现方式: 1. 实现`UserType`接口:这是最...
在操作数据时,我们只需操作对象,Hibernate会自动完成与数据库的交互,包括CRUD(创建、读取、更新、删除)操作。 3. **登录功能实现**:在Struts2和Hibernate结合的项目中,登录功能通常涉及用户输入验证、数据库...
在Java世界中,Hibernate是一个非常流行的持久化框架,它简化了数据库操作,使得开发者可以更加专注于业务逻辑而不是底层数据访问的细节。本训练主要关注在使用Hibernate时如何处理与各种数据库字段类型的映射,这...
**Hibernate单表操作实例解析** Hibernate 是一个流行的 Java ORM(对象关系映射)框架,它允许开发者使用面向对象的方式操作数据库。在这个实例中,我们将深入理解如何使用 Hibernate 对单表进行基本的操作,包括...
本文将详细介绍如何利用Struts2和Hibernate实现对单表的增删改查操作。 #### 二、环境搭建 1. **Web.xml配置**: ```xml xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi=...
总结来说,Hibernate通过配置文件和实体类实现了对BLOB和CLOB类型的支持,允许开发者在Java代码中方便地操作大数据。通过SessionFactory和Session接口,我们可以进行数据的增删改查操作,同时注意数据库的性能优化,...
- `cascade` 属性可以控制关联对象的级联操作,例如 `cascade="save-update"` 可以让保存或更新一个实体时,同时保存或更新其关联的对象。 以上就是 Hibernate 中的一对多、多对一和多对多关系的配置和使用方法。...