定制的DAO:持久存在并记录存在?

时间:2013-08-12 16:04:40

标签: java orm dao

只是为了它的一脚,我正在使用普通的JDBC编写一些DAO。

目前我有一个将实体数据保存到记录的add方法。现在,我需要考虑记录已经存在的情况。我猜测在现成的ORM中有一个持久的方法:

  • 检查记录是否已存在。在这种情况下,PK上的SELECT会比find更有效吗?
  • 例如,当存在冲突的主键时,会抛出异常。
  • 两个?

这通常是怎么做的?

1 个答案:

答案 0 :(得分:1)

在像Hibernate这样的典型ORM中,如果您尝试插入与持久性实体具有相同标识符的瞬态实体,则会出现Constraint Violation异常。

我建议您启动一个事务,搜索/查找具有相同标识符的实体。如果存在,请告诉您的应用程序存在问题,可能是自定义异常和回滚。如果不存在,则继续插入实体并提交事务。

这完全取决于构成平等实体的内容,即。 PK,一些独特的领域等。通常,在ORM中,您将能够为实体标识符定义生成策略。