hibernate保存需要合并吗? Cascade如何运作?

时间:2018-05-18 14:41:34

标签: hibernate

我有一个带有子类的Parent类,如下所示

 class Parent{
          private child; 

     } 

 Class Child {........ some variables; }

当在UI上进行任何更改时,我们正在合并oldObject和newObject。 现在,在使用hibernate保存数据时,它将数据传递到DAO层,但保存数据。

我需要使用合并功能吗?

2 个答案:

答案 0 :(得分:0)

为清楚起见,我们假设您在数据代码中执行以下操作:

public void updateMyEntity(TheEntity oldEntity) {
  final Session session = openSession();
  try {
    session.getTransaction().begin();

    TheEntity attachedEntity = session.find( TheEntity.class, oldEntity.getId() );
    copyDataFromDetachedEntityToAttached( oldEntity, attachedEntity );

    session.getTransaction().commit();        
  }
  catch ( Exception e ) {
    if ( session != null && session.getTransaction().isActive() ) {
      session.getTransaction().rollback();
    }
    throw e;
  }
  finally {
    if ( session != null && session.isOpen() ) {
      session.close();
    }
  }
}

如果TheEntity由一些基本或级联启用的关联组成,您可以轻松忽略对 merge 的调用,只需更改附加的对象即可。在提交期间,Hibernate将执行flush,它将隐式合并对持久化上下文中任何附加对象所做的更改。

现在需要注意的是TheEntity是否有任何未启用级联的关联。如果是这种情况,您将需要为任何新添加的关联处理适当的持久性。

答案 1 :(得分:0)

浏览了Google的caasecade选项。保存更新对我有用。