持久化类:就是一个Java类(JavaBean),这个类与表建立映射关系就可以成为是持久类
持久化类 = JavaBean + xxx.hbm.xml
编写规则:
- 1.提供一个无参数,public访问控制符的控制器 --底层需要反射
- 2.提供一个标识属性,映射数据表主键字段 --唯一标识OID,数据库通过主键,Java对象通过地址确定对象,持久化类通过唯一标识OID确定记录
- 3.所有属性提供public访问控制符的get,set方法
- 4.标识属性应尽量使用基本数据类型的包装类型。(使用long不使用int),在封装存储到数据库是空值为null
持久化对象:持久化类实现的对象
持久化对象的三种状态:
- 1.瞬时态 --没有持久化标识OID,没有被纳入到Session对象管理
获得瞬时态对象:
User user = new User();
瞬时态-->持久态:
save() / saveOrUpdate();
瞬时态-->脱管态:
user.setId(1);
- 2.持久态 --有持久化标识OID,被Session对象管理
获得持久化对象:
get() / load() ;
持久化-->瞬时态
delete(); //比较有争议,进入特殊的状态(删除态,Hibernate不建议使用)
持久化-->托管态
session.close() / evict() / clear() ;
- 3.脱管态 --有持久化标识OID,没有被纳入Session对象管理
获得脱管态对象:不建议直接获得脱管态对象
User user = new User(); user.setId(1);
脱管态-->持久态
update() / saveOrUpdate() / lock()
脱管态-->瞬时态
user.setId(null);
注意:持久态的持久化对象具有自动更新数据库的能力!!
Hibernate的一级缓存--->>>Session的缓存和快照