【发布时间】:2020-05-21 10:32:38
【问题描述】:
早上好,
我正在创建一个新用户,它的电子邮件必须是唯一的。我已经在 User 实体中声明了它。
我想知道在数据库中创建用户时捕获 DataIntegrityViolationException 是否更好(更快/最佳实践),或者检查用户是否存在更好:select count(*) from User u where u.email=?例如。
我在 SpringBoot 中工作,使用 MySQL 和 JPA。
非常感谢!!
【问题讨论】:
-
业务逻辑应该在数据库抛出异常之前处理这个问题,所以我建议检查
emailId是否已经存在,如果存在则发送正确的响应,否则插入用户 -
@Avi 是的,但关键是:检查是否更有效,如果不存在则创建用户,还是尝试直接创建并处理该异常?这就是我要指出的。前逻辑或后处理效率。
-
我明白简单来说还可以......执行 1 个查询优于 2 个查询,反之亦然?是什么问题,是的,运行 1 个查询是有效的,但不要忽视可能影响代码质量的过度优化
标签: mysql spring-boot spring-data-jpa