Hibernate 中的刷新和提交有什么区别?
问问题
11605 次
2 回答
6
从休眠文档:
刷新是将底层持久存储与内存中保存的持久状态同步的过程。
好吧,对于一些在阅读了上面的陈述后可能会想到下一个问题(例如,flush和commit之间有什么区别)的人来说,上面的陈述是令人困惑的。
Flush就像实际执行语句但不提交它。例如:您打开任何 SQL 执行工具(如 Oracle SQL Developer 或其他),打开一个会话并触发更新语句。打开新的 SQL 会话,直到或除非您在第一个会话中进行提交,您才会看到更新。因此查询在特定的 Oracle 会话中执行但未提交。
当您调用 Hibernate 的save()
orupdate()
时,并不意味着底层查询会同时执行。它通常在显式commit
完成或事务结束时执行。但是在某些情况下(例如获取分配给瞬态对象的 ID,以控制 Hibernate 会话的大小,例如批量更新,否则您可能会出现内存不足异常)您希望执行查询,但不提交它。冲洗在这里有帮助。
于 2017-03-14T13:39:56.153 回答