瞬时状态
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.
两者的区别
如果不使用事务,则必须用openSession得到sesion,并且还要加一句
session.connection().setAutoCommit(true);