这种结构什么时候有意义?

时间:2013-09-17 08:20:20

标签: java database hibernate jpa orm

有时为了更好的更新对象,我可以这样写:

session.merge(object);

但有时候这还不够我必须写

object1 = session.merge(object);
session.update(object1);

你能解释一下这种方式之间的差异吗?

1 个答案:

答案 0 :(得分:0)

来自Hibernate Session Javadoc:

  • merge(Object o)

    将给定对象的状态复制到具有相同标识符的持久对象上。如果当前没有与会话关联的持久性实例,则将加载该实例。返回持久化实例。如果给定实例未保存,请保存副本并将其作为新的持久实例返回。给定的实例不会与会话关联。如果关联与cascade="merge"映射,则此操作会级联到关联的实例。

  • update(Object o)

    使用给定分离实例的标识符更新持久化实例。如果存在具有相同标识符的持久性实例,则抛出异常。如果关联与cascade="save-update"映射,则此操作会级联到关联的实例。

在以下链接中,您可以找到有关以下内容的其他信息: