目录
1、Hibernate对象的状态
在hibernate中java对象的状态,Hibernate 把对象分为 4 种状态: 持久状态(对象), 临时状态(对象), 游离状态(对象), 删除状态(对象)。
Session 的特定方法能使对象从一个状态转换到另一个状态。
1.1临时对象(transient)
OID 为 null 不处于 Session 的缓存中 在数据库中没有对应的记录 |
1.2 删除对象(Removed)
OID 不为 null 从一个 Session实例的缓存中删除 Session 已经计划将其从数据库删除, 事务提交后, 会执行 SQL delete 语句, 删除数据库中的对应记录 一般情况下, 应用程序不该再使用被删除的对象 |
1.3持久化对象
OID 不为 null 位于 Session 缓存中 持久化对象和数据库中的相关记录对应 Session 在清理缓存时, 会根据持久化对象的属性变化, 来同步更新数据库 在同一个 Session 实例的缓存中, 数据库表中的每条记录只对应唯一的持久化对象 |
1.4游离对象
OID 不为 null 不处于 Session 的缓存中 一般情况需下, 游离对象是由持久化对象转变过来的, 因此在数据库中可能还存在与它对应的记录 |
1.5图解hibernate中java对象的状态
程序代码 |
生命周期 |
状态 |
tx = session.beginTransaction(); Customer c = new Customer); |
开始生命周期 |
临时对象 |
Session.save(c) |
处于生命周期中 |
转变为持久化对象 |
Long id=c.getId(); c = null; Customer c2 = (Customer)session.get(Customer.class,id); tx.commit(); |
处于生命周期中 |
处于持久化对象 |
session.close(); |
处于生命周期中 |
转变为游离对象 |
c2.getName(); |
处于生命周期中 |
游离对象 |
c2 = null; |
结束生命周期 |
结束生命周期 |
1.6测试代码
public class HeroDao1 { |