从用户输入创建新实体时,我无法确定没有其他实体具有相同的数据。我能够找到的唯一示例使用了预定义的ID,因此可以通过调用entityManager.find(id)
来检查实体是否存在。如果生成了id,我会看到几种安全持久的方法:
entityManager.persist
并希望获得最佳效果 - 抓住EntityExistsException
并吞下它或显示错误消息entityManager.merge
并让JPA进行检查......它会一直正常运作吗?entityManager.persist
我的直觉是采用第三种方法,但还有更好的方法吗?
我正在使用JPA 2,并希望避免特定于供应商的解决方案(如Hibernate的SessionManager.saveOrUpdate
)
答案 0 :(得分:1)
如果你真的无法预测新生成的ID是否是唯一的,我肯定会采用第三种方法。
此外,我认为您不需要这样简单查询的标准,并且在大多数情况下,额外查询的成本不会非常昂贵。