gpt4 book ai didi

java - JPA,重用已删除的 ID

转载 作者:行者123 更新时间:2023-12-01 17:22:00 24 4
gpt4 key购买 nike

我使用具有生成 ID 的实体(因此实体有一个由 @Id@GenerateValue 标记的字段)。我将在业务逻辑中使用实体的生成 ID,我有一个问题:

如果我删除一个实体,它的ID是否会被重新使用? IE。新生成的ID只能比之前生成的ID大吗?

最佳答案

您不需要重复使用 ID,也不应该浪费时间担心这个问题。 (这是一个初学者的数据库问题。)

一般来说,重用 ID 在技术上是可能的——虽然不方便——但它需要锁定整个表,因此对于并发/多用户使用来说效率极低。

此外,恢复的 ID 不会是连续的范围......因此表示效率低下。

没有严肃的数据库系统实现这样的方案。

<小时/>

所以,不用担心恢复情况。只需确保您分配的 key 类型(整数或长整型)具有足够的容量(整数为 20 亿,长整型/BIGINT 为 2^63),足以在合理可能的最大交易量下使用 200 多年。

例如,当前每天的记录量为 10,000 条:

  • 每年 365 万
  • 业务增长乘以 20 = 每年 7300 万美元
  • 乘以 200 年 = 146 亿年

这只有 ~34 位——对于“int”来说太大了,但是使用 long(63 位正数)它可以为您提供 2^29(大约 5 亿)倍的备用容量。

然后,您可以告诉老板, key 恢复是不必要的,并且系统预计在未来 1000 亿年中的任何时候都不会耗尽 key 。

关于java - JPA,重用已删除的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18031469/

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