我需要在DB中创建礼品卡实体,其中礼品卡代码是由算法生成的,并且它们碰撞的几率很低。
在DB中插入礼品卡实体之前,我们需要检查重复礼品卡实体的可能性。
还需要注意以下几点
我使用Hibernate进行DB操作,我有以下选项。
第一种选择
第二种选择
我对哪一种方法更可取感到有点困惑?
发布于 2014-09-03 11:50:37
若要确保不允许复制,则必须在用于存储礼品卡代码的列上具有唯一索引和/或唯一约束。
尽管如此,我建议第一种选择,因为如果礼品卡代码复制的可能性很低,则效率更高。另外,在第二个选项中,即使在插入新代码之前检查重复项,也无法保证在检查和插入之间的DB中没有插入相同值的代码,因此在插入引发约束异常时也必须处理这种情况。
发布于 2014-09-03 11:40:22
我将创建所有,然后使用JPQL lilke检查复制的值:
select p from Ticket p where p.id in (:idList)使用这种“批处理”操作,您不需要在每次迭代时访问数据库。这就是你第一个选择的问题。
如果使用某种数据库规则,例如:约束或触发器,则可能会收到可能导致事务回滚的异常。
https://stackoverflow.com/questions/25643000
复制相似问题