JPA,重复使用已删除的ID

时间:2013-08-03 09:44:18

标签: java jpa

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

如果删除某个实体,其ID是否会被重复使用?即新生成的ID只能比之前生成的更大吗?

1 个答案:

答案 0 :(得分:4)

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

一般情况下,重用ID在技术上是可行的 - 尽管不方便 - 但它需要锁定整个表,因此对于并发/多用户使用效率极低。

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

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


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

例如,目前每天有10,000个记录卷:

  • 每年365万
  • 20年营业额增长=每年7300万
  • 次200年= 146亿

这只是~34位 - 对于'int'来说太大了,但是使用长(63位正)它会使你的备用容量增加2 ^ 29(~5亿)倍。

然后,您可以告诉您的老板,不需要进行密钥恢复,系统可以放心地预计在未来1000亿年内不会耗尽密钥。