transaction.commit()是否影响第一个Hibernate缓存?

6yjfywim  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(126)

如果我们有会话示例,然后调用session.getTransaction.commit(),那么这个操作会影响第一个休眠缓存吗(比如清除或者更新)?

b4lqfgs4

b4lqfgs41#

这取决于创建Session示例的方式。
如果您使用SessionFactory.getCurrentSession(),它将委托给CurrentSessionContext来创建Session。通常使用的实现是ThreadLocalSessionContext,它将在事务提交后自动清除一级缓存。(请参阅此处的docs,该行为由isAutoCloseEnabled()定义,并设置为true)
如果使用SessionFactory.openSession()创建Session,是否清除一级缓存取决于hibernate.transaction.auto_close_session属性,默认情况下不会清除它。
hibernate.transaction.auto_close_session的含义可以在这里找到,我引用如下:
导致会话在事务处理完成后阶段关闭。如果可能,请改用内置的自动会话上下文管理。
内置的自动会话上下文管理基本上是指通过SessionFactory.getCurrentSession()创建会话,并配置为使用ThreadLocalSessionContext

相关问题