gpt4 book ai didi

java - 在 JPA/Play 中提交事务之前,实体如何获取 ID?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:12:28 26 4
gpt4 key购买 nike

See this question .

事实证明,即使不手动提交交易,在提交TX之前,调用save()方法后,此人也有一个ID。

数据库不是负责分配ID字段吗?如果是这样,如何在提交前填写ID字段?在提交 TX 之前是否与 DB 进行了任何通信?

最佳答案

是的,允许 JPA 在事务提交之前与数据库通信。它可能会发生,即当您显式调用 EntityManager#flush() 时。

此外,JPA 提供程序可以在必要时执行刷新操作。但是,为了方便起见,JPA 提供程序将数据库操作延迟到事务提交的时间。

一些自动 ID 生成器策略必须访问数据库才能获得 PK 值(据我所知,IDENTITY 策略就是这样工作的)。
相反,TABLESEQUENCE 生成器不必访问 DB 来获取 ID 值。他们使用 allocationSize 参数向 DB TABLE 或 SEQUENCE 请求 batch ID,这些 ID 将被提供给新实体,而无需与数据库进一步通信。

关于java - 在 JPA/Play 中提交事务之前,实体如何获取 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169640/

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