JPA,重复使用已删除的ID

Vic*_*rin 0 java jpa

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

如果我删除实体,它的ID是否可以重复使用?即新生成的ID只能比以前生成的ID大吗?

Tho*_*s W 5

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

通常,从技术上讲,重用ID是可能的-尽管不方便-但它需要锁定整个表,因此对于并发/多用户使用效率极低。

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

没有认真的数据库系统实现这种方案。


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

例如,当前每天有10,000条记录:

  • 每年365万
  • 业务增长的20倍=每年7300万
  • 200年= 146亿

这仅是〜34位-对于'int'来说太大了,但是使用长(63位为正数),它将为您提供2 ^ 29(〜5亿)倍的备用容量。

然后,您可以告诉您的老板,密钥恢复不是必需的,并且可以确信,该系统在未来1000亿年的任何时间都不会用完密钥。