第13章 管理hibernate的缓存
在hibernate中session几个重要方法个人理解
<!--[if !supportLists]-->1. <!--[endif]-->session.flush()和session.commit()的区别?
session.flush()和session.commit()方法都是清理缓存,但是session.flush不会提交事物,session.commit()会提交事物
<!--[if !supportLists]-->2. <!--[endif]-->session.flush()和session.clear()方法的区别?
在执行批量操作时,session.flush()方法每次从session缓存中清理一个对象。
而session.clear()是强制删除session一级缓存中的所有数据。
<!--[if !supportLists]-->3. <!--[endif]-->session.commit()方法,先调用session.flush()方法清理缓存,然后执行commit方法提交事务。
<!--[if !supportLists]-->4. <!--[endif]-->session.evict(Customer) 从session的一级缓存中删除,此时Customer对象就变成游离对象了。
<!--[if !supportLists]-->5. <!--[endif]-->session.clear() 该方法会强制清空当前session中的缓存 。
在hibernate中java对象的状态
<!--[if !supportLists]-->1. <!--[endif]-->临时状态 (transient) 这个对象A a = new A();
<!--[if !supportLists]-->2. <!--[endif]-->持久状态(persistent) 将a这个对象放在session的一级缓存中,此时临时对象转换成持久对象。
<!--[if !supportLists]-->3. <!--[endif]-->游离状态(detached) 清理缓存session中的持久对象现在就变成游离对象了。