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 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器