不确定我的标题是否足够明确。 这就是我的意思。我正在使用spring 3.0.5 + hibernate 3.6.1.RELEASE
开发一个 Web 应用程序,并使用 sessionFactory
JPA annotation
.该应用程序允许用户使用username
,email
和password
进行注册。
用户可以使用(username or email)
和password
登录。我试图找到一种可靠的方法来判断有一个独特的禁忌异常,表示为
java.sql.BatchUpdateException: Duplicate entry 'myusername' for key 'USERNAME'
或org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
如果我能得到一个特定的例外,我可以通知用户他的用户名或电子邮件已经被占用。
我想到的是先做一个选择来检查,但这对我来说听起来不对。还有其他解决方案吗?最佳实践是什么?
感谢您阅读本文
最佳做法是在创建新用户时检查具有该用户名/电子邮件地址的用户是否已存在。如果它确实返回一些内容以指示失败,否则创建用户。
通常,不应依赖数据库约束来强制实施业务规则。
进行选择检查。
通常,如果要创建唯一 ID,它们应该是唯一的,因此唯一性冲突是一种异常错误情况,应通过捕获异常来处理。
但在这里,你让用户提供希望唯一的密钥。您只是不能假设这些真的是非唯一的。因此,在尝试创建用户对象之前,您应该检查是否使用了用户名。