jaguar1975cn 2008-10-20 23:51
浏览 209
已采纳

关于Hibernate的异常处理

初学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异常?
  • 写回答

2条回答 默认 最新

  • movingboy2 2008-10-21 08:42
    关注

    我觉得两种办法都可以吧,看自己的团队更偏向哪种风格。但有一点要遵守的就是一定要统一,不要两种都用。就我们的情况而言,一般会先检查一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Mac虚拟机安装Windows,Windows中用idea跑项目,报错process finished with exit code -1073741819(0xc0000005) 如何解决?
  • ¥15 关于python爬虫返回js数据结构的处理
  • ¥15 ubuntu所用stm32标准库开发烧录没反映
  • ¥15 运维工程师(在职人员回答)
  • ¥15 Kmeans的趋势分析有会的吗
  • ¥20 R语言单细胞测序 对seurat对象进行标准化时出现问题
  • ¥15 请问如何在matlab里使用raven工具?
  • ¥100 关于ios手游充值到一定金额,再点充值提示公众号的问题。
  • ¥15 求一个stm32串口控制程序
  • ¥20 Windows 驱动开发版本疑问相关