我使用具有生成 ID 的实体(因此 Entity 有一个字段,由@Id
and标记@GeneratedValue
)。我将在业务逻辑中使用生成的实体 id,我有一个问题:
如果我删除一个实体,它的 ID 是否会被重新使用?即新生成的 ID 只能比之前生成的更大?
您不需要重复使用 ID,也不需要浪费时间担心这一点。(这是一个初学者的数据库问题。)
一般来说,重用 ID 在技术上是可能的——虽然不方便——但它需要锁定整个表,因此对于并发/多用户使用来说效率极低。
此外,恢复的 ID 不会是一个连续的范围......因此表示效率低下。
没有严肃的数据库系统实现这样的方案。
所以,不用担心恢复。只需确保您分配的密钥类型(整数或长整数)有足够的容量(整数为 20 亿,长整数/大整数为 2^63),足以在最大的合理交易量下使用 200 多年。
例如,当前每天有 10,000 条记录:
这只有约 34 位——对于“int”来说太大了,但使用长(63 位正数)它可以为您提供 2^29(约 5 亿)倍的备用容量。
然后,您可以告诉您的老板不需要恢复密钥,并且可以自信地预测系统在未来 1000 亿年的任何时候都不会用完密钥。