1. 什么是持久化类
1、持久化类:就是一个 Java 类(咱们编写的 JavaBean),这个 Java 类与表建立了映射关系就可以成为是持久化类。
持久化类 = JavaBean + xxx.hbm.xml
2、Hibernate 框架环境中存在持久化类的概念。
2. 持久化类的编写规则
提供一个无参数 public 访问控制符的构造器。 – 底层需要进行反射。
提供一个标识属性,映射数据表主键字段。 – 唯一标识 OID.数据库中通过主键;Java对象通过地址确定对象;持久化类通过唯一标识 OID 确定记录。
所有的属性需要提供 get 和 set 方法。
标识属性应尽量使用基本数据类型的包装类型。
选择实现序列化接口。
3. 持久化类示例
1、新建 User 类
/Hibernate5_d02_c01/src/hibernate/domain/User.java
程序代码如下:
package hibernate.domain;
import java.io.Serializable;
/*
* 选择实现序列化接口
*/
public class User implements Serializable{
//一个唯一标识OID
private Integer id;
private String name;
//类型尽量使用基本类型的包装类
private Integer age;
/**
* 空的构造方法,用于反射生成对象
@Title: User
*/
public User() {
// TODO Auto-generated constructor stub
}
//提供getter和setter方法
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
2、新建 User.hbm.xml
/Hibernate5_d02_c01/src/hibernate/domain/User.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="hibernate.domain.User" table="t_user">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="age" column="age"></property>
</class>
</hibernate-mapping>
3、在 hibernate.cfg.xml 中关联 User.hbm.xml
/Hibernate5_d02_c01/src/hibernate.cfg.xml
程序代码如下:
<?xml version="1.0" encoding="UTF-8"?>
...
<!-- 映射文件 -->
<mapping resource="/hibernate/domain/Person.hbm.xml"/>
<mapping resource="/hibernate/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4、新建 TestUser 测试类
/Hibernate5_d02_c01/src/hibernate/test/TestUser.java
程序代码如下:
package hibernate.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import hibernate.domain.User;
import hibernate.util.HibernateUtils;
public class TestUser {
@Test
public void testSave(){
//获取 session
Session session = HibernateUtils.openSession();
Transaction tr = session.beginTransaction();
//新建 User 对象
User user = new User();
user.setName("小张");
user.setAge(18);
//保存
session.save(user);
tr.commit();
//关闭资源
session.close();
}
}
5、运行项目
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/c5c496c02c2e19b7338341435d8f4955.jpeg)
![运行效果](https://i-blog.csdnimg.cn/blog_migrate/da8c5c4fde2299d8c01dfb677c703666.jpeg)