Hibernate 休眠持久实例

Hibernate 休眠持久实例,hibernate,persistence,Hibernate,Persistence,我在读《hibernate在行动》时遇到了以下问题 持久实例参与事务,它们的状态是同步的 在事务结束时使用数据库。当事务提交时, 内存中的状态通过执行SQL传播到数据库 插入、更新和删除语句。此过程也可能在其他时间发生 时代。例如,Hibernate可能在执行之前与数据库同步 查询的属性。这可以确保查询知道先前所做的更改 在交易期间 我看不懂这句粗体字。这种情况何时会出现。同步将如何进行。同步实际上保存了以前对数据库所做的更改。为此,可以使用flush()方法 通常在进行另一个sql查询之前执行

我在读《hibernate在行动》时遇到了以下问题

持久实例参与事务,它们的状态是同步的 在事务结束时使用数据库。当事务提交时, 内存中的状态通过执行SQL传播到数据库 插入、更新和删除语句。此过程也可能在其他时间发生 时代。例如,Hibernate可能在执行之前与数据库同步 查询的属性。这可以确保查询知道先前所做的更改 在交易期间


我看不懂这句粗体字。这种情况何时会出现。同步将如何进行。

同步实际上保存了以前对数据库所做的更改。为此,可以使用flush()方法


通常在进行另一个sql查询之前执行此操作,以确保已进行更改。

是的,涉及两个操作:更新数据库以反映对持久对象所做的更改;此操作称为刷新。Hibernate可以在事务期间的任何时候调用它,然后调用提交本身,这需要刷新以确保数据库是最新的,并在基础数据库中调用提交以终止事务。

FlushMode.AUTO 在数据库事务结束时将会话状态刷新到数据库是不正确的 为使更改持久而必需,这是常见情况。冬眠 不会在每次查询之前刷新。但是,如果内存中保存了更改 将影响查询结果,默认情况下,Hibernate将首先同步

FlushMode.COMMIT 指定在查询之前不会刷新会话 执行(仅在数据库事务结束时刷新)。是

FlushMode.NEVER允许您指定仅显式调用flush()的结果 会话状态与数据库同步


参考:Spring启动

搜索hibenrnate锁定并读取