English 中文(简体)
捕捉休眠/JPA/会议的独特关键重复例外情况的最佳做法
原标题:Best Practice to catch Hibernate/JPA/Session unique key duplicate exception

无法确定我的标题是否足够清晰。 这里指的是 : I m 正在开发一个网络应用程序, 使用 < code> spring 3. 0.5 + hibernate 3.6. 1. RELESE , 使用 < code> JPA 注释 , 使用 < code > sessionFactory 。 应用程序允许用户使用 < code > username , < code > email 和 < code> password 注册。

用户可以使用 (用户名或电子邮件) password password 登录。

java.sql.BatchUptidateExption: USERNAME 关键词 org.hibertate. 例外。 限制 Vislation Exception: 无法执行 JDBC 批次更新 的重复条目用户名 或 org.hibertate. exception: 无法执行 JDBC 批次更新

如果我能得到一个特定的例外,我可以通知用户他的用户名或电子邮件已被使用。

还有什么其他解决方案? 最佳做法是什么?

谢谢你看这个

最佳回答

实际上,最佳做法是,在创建新用户时,检查使用该用户名/电子邮件地址的用户是否已经存在。如果存在,则返回某东西以显示失败,否则创建用户。

通常您不应依赖数据库限制来执行商业规则。

问题回答

我想做选择检查是没问题的

一般来说,如果您正在创建独特的身份识别码,这些身份识别码应该是独特的,因此,违反独特的身份识别码是一种例外的错误情况,应当通过抓住例外处理。

但在这里, 您再次让用户提供希望中唯一的密钥 。 您不能认为这些密钥真的不是唯一的。 所以, 您应该先检查用户名是否被取出, 然后再尝试创建用户对象 。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签