【问题标题】:Custom-made DAO: persist and record exists?定制DAO:持久化和记录存在吗?
【发布时间】:2013-08-14 00:55:41
【问题描述】:

我正在使用普通 JDBC 编写一些 DAO。

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

  • 要么检查记录是否已经存在。在这种情况下,PK 上的 SELECT 会比 find 更有效?
  • 或者在主键冲突等情况下引发异常。
  • 两者都有?

这通常是怎么做的?

【问题讨论】:

    标签: java orm dao


    【解决方案1】:

    在像 Hibernate 这样的典型 ORM 中,如果您尝试插入一个与持久实体具有相同标识符的瞬态实体,您将得到一个 Constraint Violation 异常。

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

    这一切都取决于什么构成了一个平等的实体,即。 PK、一些唯一字段等。通常,在 ORM 中,您将能够为实体标识符定义生成策略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-12
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多