我使用带有生成ID的实体(因此实体有一个标记为@Id
和@GeneratedValue
的字段)。我将在业务逻辑中使用生成的实体id,我有一个问题:
如果删除某个实体,其ID是否会被重复使用?即新生成的ID只能比之前生成的更大吗?
答案 0 :(得分:4)
您不需要重复使用ID,也不需要浪费时间来担心这一点。 (这是初学者的数据库问题。)
一般情况下,重用ID在技术上是可行的 - 尽管不方便 - 但它需要锁定整个表,因此对于并发/多用户使用效率极低。
此外,恢复的ID不会是连续的范围..因此表示效率低。
没有严肃的数据库系统实现这样的方案。
所以,不要担心恢复。只需确保您分配的密钥类型(整数或长整数)具有足够的容量(对于INTEGER为20亿,对于长/ BIGINT为2 ^ 63),它足以在最大的合理可能交易量下使用200年以上。
例如,目前每天有10,000个记录卷:
这只是~34位 - 对于'int'来说太大了,但是使用长(63位正)它会使你的备用容量增加2 ^ 29(~5亿)倍。
然后,您可以告诉您的老板,不需要进行密钥恢复,系统可以放心地预计在未来1000亿年内不会耗尽密钥。