如果设置了 FlushMode.AUTO,当我调用 session.close() 时,Hibernate 会刷新我更新的持久对象吗?
我知道 session.close() 通常不会刷新会话,但我不确定 FlushMode.AUTO 对此有何影响。
从文档:
FlushMode.AUTO
有时会在查询执行之前刷新会话,以确保查询永远不会返回过时状态。这是默认的刷新模式。
这是否意味着我可以依靠 Hibernate 来验证我的更改有时会在我的会话关闭之前被刷新?
小代码示例:
Session session = HibernateSessionFactory.getSession();
PersistedObject p = session.get(PersistedObject.class,id);
p.setSomeProperty(newValue);
session.close();
更新
根据文档,这些是会话刷新的地方(使用 AUTO 时)
- 在一些查询执行之前
- 来自 org.hibernate.Transaction.commit()
- 从 Session.flush()
这并没有说明 Session.close()