我正在阅读hibernate并发现以下内容
持久化实例参与事务 - 它们的状态是同步的 与交易结束时的数据库。当事务提交时, 内存中保存的状态通过执行SQL传播到数据库 INSERT,UPDATE和DELETE语句。此过程也可能发生在其他过程中 倍。例如, Hibernate可能会在执行前与数据库同步 查询。这可确保查询了解先前所做的更改 在交易期间。
我不明白粗线。怎么会出现这种情况呢?同步将如何发生。
答案 0 :(得分:1)
同步实际上保存了以前对数据库所做的更改。为此,您可以使用flush()方法。
通常在另一个sql查询之前执行此操作,以确保已进行更改。
答案 1 :(得分:0)
是的,涉及两个操作:更新数据库以反映对持久性objets所做的更改;此操作称为flush。 Hibernate可以在事务期间随时调用它,然后,提交本身需要刷新以确保数据库是最新的,并且底层数据库中的COMMIT终止事务。
答案 2 :(得分:0)
FlushMode.AUTO 在数据库事务结束时将会话状态刷新到数据库是 为了使更改持久而需要,这是常见的情况。过冬 在每次查询之前都不会刷新。但是,如果内存中存在更改 会影响查询结果,默认情况下,Hibernate会先同步。
FlushMode.COMMIT 指定在查询之前不会刷新会话 执行(它将仅在数据库事务结束时刷新)。是
FlushMode.NEVER允许您指定只显式调用flush()结果 使会话状态与数据库同步。
参考:Spring In Action