FlushMode
两者皆 Session
s 设置为 AUTO
.
session
A: session
开始
session
B: session
开始
Session
A:Session
创建新对象,Session#flush()
被调用,Session
结束。
Session
B:Session
从数据库读取对象,在此之前自动执行Session#flush()
手术。 Session
A 新创建的对象对 Session
B 也可见吗?
最佳答案
这取决于您的隔离级别和底层数据库。 Hibernate 默认将隔离级别设置为底层数据库。 MySQL 的默认值是 REPEATABLE_READ。这意味着如果 A 在 B 第一次读取之前提交, session B 将看到更新(无论这是否是对有问题的更新实体的读取,尽管我相信这是 MySQL 特定的行为。某些数据库可能允许读取不相关的实体)实体)。
如果隔离级别为 READ_COMITTED,则只要 session A 在 session B 执行您感兴趣的读取之前提交, session B 就会看到 session A 的更新。
值得指出的是,同花对这个问题绝对没有影响,除非你完全没有隔离。唯一重要的是提交。
关于java - 不同 Hibernate session 中对象的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13842357/