Springboot + JPA:捕获DataIntegrityViolationException与检查COUNT(field)

问题描述 投票:0回答:1

早上好,

我正在创建一个新用户,它的电子邮件必须唯一。我已经在User实体中声明了它。

我想知道在数据库中创建用户时捕获DataIntegrityViolationException更好(更快/最佳实践),或者最好是检查用户是否存在:从User u中选择count(*),其中u .email =?例如。

我正在使用MySQL和JPA在SpringBoot中工作。

非常感谢!

mysql spring-boot spring-data-jpa
1个回答
0
投票

在这种情况下,性能差异可能很小。

这里更重要的是通过阅读代码了解发生了什么。您应该在服务层中有一些代码,在实际尝试进入数据库之前,检查是否违反了所定义的每个规则。对于新来的人(甚至对您而言,数周之内),IT部门将更容易清晰地了解测试的内容和方式。然后,该部分代码应使用专用代码引发异常(例如,让您获取由业务分析师定义的业务规则的ID),并且在属性中,您应该具有与该规则相对应的消息(消息键可以例如是规则的ID)。

此外,在此表中插入一行时,由于各种原因,您可能会获得DataIntegrityViolationException。因此,这毕竟不是一个持久的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.