当前位置: 首页 > 面试题库 >

JPA合并与持久

充修能
2023-03-14
问题内容

到目前为止,我的偏好是始终使用EntityManager
merge()来处理插入和更新。但是我还注意到,合并会在更新/插入之前执行其他选择查询,以确保数据库中不存在记录。

现在,我正在一个需要对数据库进行大量(批量)插入的项目。从性能的角度来看,在我绝对知道我一直在创建要持久化的对象的新实例的情况下,使用持久化而不是合并有意义吗?


问题答案:

它不是用一个好主意merge时,persist就足够了-
merge做了很多更多的工作。之前已经上讨论了该主题,并且本文详细解释了它们之间的区别,并提供了一些不错的流程图以使事情变得清晰。



 类似资料:
  • 我有两个这样的 JPA 实体: 如您所见, 字段在 和 之间形成了多对多关系,因此我认为使用 来指定字段的级联是合适的。但是,当尝试在映射中保留具有几个 值的 时,我得到以下异常: 显然,EclipseLink 不会级联我的 实例的持久性。我应该如何注释 以使级联持久工作?

  • 问题内容: 我想在数据库中复制实体集合。我使用以下方法检索该集合: 现在,我想复制“类别”列表,并使用EntityManager保留它。我正在使用JPA /hibernate。 更新 在知道如何分离我的实体之后,我需要知道要分离什么:当前代码: 这引发了异常。 我认为他想重新加载类别,因为我已经将它们分离了。我现在该怎么办? 问题答案: 亚伦·迪吉拉(AaronDiguila)的答案是去这里的方式

  • 问题内容: JPA中的和批注有什么区别?它们可以一起使用吗? 如果 他们可以一起使用吗?还是其中之一就足够了? 问题答案: 表示要保留属性,并且要使用标准映射。它具有允许您指定是否要延迟加载属性以及该属性是否为空的参数。 允许您指定数据库中属性要保留到的列的名称。 如果您指定一个不带另一个,那么您将获得明智的默认行为,因此,除了特殊情况外,通常人们只使用一个。 因此,如果我们想要延迟加载属性并指定

  • 我正在尝试使用JPA合并具有@OneTo多人关系的实体,但它会抛出设置为持久化错误的分离实体。我没有持久化实体,我正在合并它。我只是在使用连接获取将Alumno实体加载到他的Matcourse a实体时遇到问题。以下是代码: 注:Alumno指学生,Asignatura指学科,Matricula指学生学科,是一名学生与其学科之间的关系。这种关系有很多种,都有额外的桌子。 更详细的信息:使用下一个查

  • 我知道关于这个问题已经有一些问题,但我认为这个问题是不同的。 稍后,我使用JPA all()从存储库中获取all;我从列表中选择一个对象并更改描述。 然后我想使用JPA merge()更新存储库中的对象(参见代码)。 这里的问题是,它在我第一次尝试更改描述时起作用(版本值现在是2)。第二次,将引发一个OptimisticLockException表示该对象同时被更改。 B.ChangeDescri

  • 我与以下实体类有一个双向的一对多关系: 当然,所有必需的级联选项都是在客户端设置的。但如果在引用现有产品订单时首次持久化新创建的客户端(如本场景所示),则它将不起作用: 已创建并持久化产品订单“%1”。工作正常。 已创建客户端“%2”,并将产品订单“%1”添加到其产品订单列表中。然后它被持久化。不起作用。 我尝试了几个apporach,但没有一个显示出预期的结果。请参阅下面的结果。我在这里阅读了所