hibernate三种状态
a) hibernate规定的三种状态:瞬时态(临时态)、持久态、游离态(脱离态)
i. 瞬时态:瞬时态|临时态: 1.没有与Hibernate产生关联. 2.与数据库中的记录没有产生关联(有关联就是 与数据库中的id有对应).
ii. 持久态:1.session有关联 2. 对象有Id
iii. 游离态/托管态/脱离态:1.没有与Hibernate产生关联 2.对象有ID
b) 三种状态的转换
I瞬时 => 游离
Sessionsession = HibernateUtils.openSession();
session.beginTransaction();
User u = new User(); // 瞬时状态
u.setId(1); //游离
session.getTransaction().commit();// 持久状态
//事务提交时,会把持久化状态对象同步到数据库中
session.close();// 游离状态
ii瞬时 => 游离
User u =new User(); // 瞬时状态
u.setId(1); //游离
iii 持久 => 瞬时
//通过get方法,得到持久状态对象
User u=(User) session.get(User.class, 1); // 持久状态
session.getTransaction().commit();// 持久状态
//事务提交时,会把持久化状态对象同步到数据库中
session.close(); // 游离状态
u.setId(null);//瞬时状态
iiii 持久 => 游离
User u= (User) session.get(User.class,1); // 持久状态
session.evict(u);//游离
iiiii游离 => 瞬时
User u= (User) session.get(User.class,1); // 持久状态
session.evict(u);//游离
u.setId(null);//瞬时
iiiiiii游离 => 持久
session.evict(u);//游离
session.update(u);//持久