gpt4 book ai didi

java - Eclipselink/JPA 保留一次记录还是分别插入每个字段?

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:43 24 4
gpt4 key购买 nike

我有一个关于 eclipselink 的持久化和合并策略的问题。我想知道 eclipselink/JPA 如何插入和更新记录。它是一个一个地插入/更新到数据库中吗?还是将它们保存在日志文件中,然后将它们刷新到数据库中?这对我来说很重要,因为我将有一个带有触发器的历史表,在插入和更新时触发。因此,如果例如每个字段都发生了更新,并且更新了 3 个字段,那么我将在历史表中有 3 条记录还是一个?如果有人回答我并留下一些引用链接以获取更多信息,我将不胜感激。

最佳答案

持久性提供者可以在它认为合适的时候自由地刷新更改。因此您无法可靠地预测更新回调的数量或预期的 SQL 语句。

通常,提供者会在每次查询之前刷新更改,以使持久性上下文中的更改可用于查询。您可以提示提供者将刷新推迟到提交时间,但提供者仍然可以随意刷新。

请参阅 JPA (2.0) 规范的相关章节:

  • §3.2.4 与数据库同步
  • §3.8.7 查询和刷新模式

编辑:刷新和事务隔离很重要。更改被刷新到数据库并调用生命周期监听器,但数据未提交并且对其他事务不可见 - read-committed isolation是默认值。提交本身是原子的。

我不确定服务器崩溃的后果是什么,但在正常情况下,数据完整性是有保障的。

关于java - Eclipselink/JPA 保留一次记录还是分别插入每个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com