初学Hibernate,有些关于异常处理的疑问,举例如下(使用Hibernate Annotation):
我有一个类User, 它的一些属性需要是唯一的,比如loginName
class User{
...
@Column(unique=true)
private String loginName;
...
}
于是我用unique=true描述它,这样在我新建一个User的时候,如果该loginName的用户已经存在,会产生一个ConstraintViolationException异常,我的问题是,我应该怎样处理这个异常才是最佳的?
按照Hibernate的文档:
No exception thrown by Hibernate can be treated as recoverable
是不是意味着所有的hibernate异常都应该在最顶层来捕捉然后作为不可恢复的异常进行处理?
但对于这个具体的应用,我认为这个异常应该是recoverable的, 接下来会提示用户说loginName已经存在,然后让用户另外指定loginName继续. 我是不是应该在persist这个用户之前先进行唯一性检查,这样来避免出现Hibernate异常?
谢谢各位!
问题补充:
谢谢您的回答. 对于出错的那个session,这个错误的确是unrecoverable的.
那我是不是应该在persist这个用户之前先进行唯一性检查,这样来避免出现Hibernate异常?