flush-强制提交刷新session
clear--清除session
evict(Obj)将对象实例从session缓存清除
session.flush() 不是必须调用的
session.close()是必须调用的
session.clear()写在flush后面 稍后解释
session.flush()的调用牵扯到事务,首先我们知道在执行事务之前都会将AutoCommit设置为false【手动提交方式,因为默认是true自动提交的】 当AutoCommit为false时 我们执行完事务就要调用到session.flush();session.clear();一切处理完后我们要close掉当前的这个session
但是当我们不做事务操作的时候 我们就没必要去调用session.flush()和session.clear()。
直接session.close()就OK 因为这时close会默认调用一次session.flush()。如果使用了ThreadLocal那么就要在close方法里处理一下ThreadLocal。
session.flush()的作用是将数据库与缓存中的数据同步
当session.clear()后才会引起缓存数据变化,这里大家要搞清楚。
本文详细解析了在Hibernate中如何正确地管理Session,包括flush、clear及evict等方法的应用场景与注意事项,帮助开发者理解这些方法在事务处理中的作用。

被折叠的 条评论
为什么被折叠?



