0

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

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

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

这通常是怎么做的?

4

1 回答 1

1

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

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

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

于 2013-08-12T16:08:07.703 回答