gpt4 book ai didi

java - 增量或序列代替表生成 JPA

转载 作者:行者123 更新时间:2023-12-01 04:48:43 25 4
gpt4 key购买 nike

我正在开发一个支持多个数据库的应用程序,并且 hibernate 可以满足该要求。

现在问题出在主要自动生成 key 中。一些数据库支持自动增量和一些增量身份所需的序列。要解决此问题,请使用以下策略

strategy = GenerationType.TABLE (javax.persistence)

这满足了我的要求。

在此post ,一位用户评论说

如果您需要按顺序排列 id,最好使用增量或序列而不是表生成

如果我使用自动增量或序列,则意味着当我将一个数据库移动到另一个数据库时需要在注释级别进行一些更改(额外负担)

更新我一下,使用增量或序列而不是表生成真的更好还是它只是一个语句?

最佳答案

自动增量缺点:在事务提交之前您不知道 id(这可能是 JPA 中的问题,因为某些 EntityManager 操作依赖于 Id)。并非所有数据库都支持自动增量字段。

序列缺点:并非所有数据库都有序列。

表的缺点:ID 不一定是连续的。

由于您不太可能用完 Id,因此使用表生成仍然是一个不错的选择。您甚至可以调整 id 分配大小以使用更多连续 id(默认大小为 50):

@TableGenerator(name="myGenerator", allocationSize=1)

但是,这将导致每次插入时至少对 id 分配表进行两次查询:一次查询最新 id 的值,一次检索它。

关于java - 增量或序列代替表生成 JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15399863/

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