Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession

Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession_第1张图片

 

Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession_第2张图片

 

 

瞬时状态

1、new 出来的对象,但没有进行session.save();

2、持久化对象调用delete()方法,变成瞬时对象;

持久态

1、在数据库中通过get(),load(),find()查询出来的数据肯定是持久化;

2、瞬时的对象调用save()方法;

3、离线对象调用update()方法;

游离态

1、手动构建离线对象;

2、持久化对象调用evict(),clear(),close()方法,可变为游离对象;

 

OpenSessoin/getCurrentSession

如果使用getCurrentSession,要在hibernate.cfg.xml中加入以下属性

<property name=”current_session_context_class”>thread</property>

openSession每次都是打开一个新的Session,并且未将当前线程与该Session绑定,资源销耗比较高。

getCurrentSession在事务提交之后会自动的将session对象关闭,也就不需要我们手动的close.

两者的区别

 

Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession_第3张图片

 

 

Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession_第4张图片

 

如果不使用事务,则必须用openSession得到sesion,并且还要加一句

session.connection().setAutoCommit(true);

 

你可能感兴趣的:(Hibernate学习04---Hibernate对象三种状态以及openSessoin/getCurrentSession)