Hibernate对象的生命周期

Hibernate对象一共有三个状态。Transient状态、persistent状态、detached状态。

1.Transient状态。

对象只是在内存当中存在,在数据库中没有与之对应的记录。

例如:User user = new User();

          user.setName("jiange");

user对象只是在内存当中存在。

2.Persistent状态。

内存中的对象在数据库中有与之对应的记录,并且纳入了Hibernate的实体管理器当Session中。Transient状态可以转化到persistent状态。例如上例中的user:

Configuration cfg = new Configuration().configure();

SessionFactory sf = new SessionFactory();

Session session = sf.openSession();

User user = new User();

user.setName("jianjian");

session.beginTransaction();

session.save(user);//此时user对象就由瞬时状态转换到持久状态。

user.setName("lilian");//persistent状态的对象,是同步的,对对象进行操作的时候也会更新数据库中的数据。

session.getTransaction().commit();

3.Deatched状态(离线状态)

特点是:在数据库中与之有对应的记录,但是没有纳入Hibernate的实体管理器Session中,但是可以转换为持久化状态,这和Transient状态转换到persistent状态时不相同的:例如:

session.beginTransaction();

User user = new User();

user.setName("zhuzhu");

session.save(user);

session.close()//此时user是一个离线状态;

session.beginTransaction();

session.update(user);//变成了一个持久化状态;

另外我们也可以自己人为地创造一个离线状态的对象。

大体就是这些了,谢谢支持,虽然没有人来看,还是自己给自己顶一个吧。。。

你可能感兴趣的:(Hibernate)