Hibernate JPA:合并分离对象的有效方法是什么?
技术:Spring、Hibernate、JSR-303、JQueryHibernate JPA:合并分离对象的有效方法是什么?,hibernate,jpa,spring-mvc,Hibernate,Jpa,Spring Mvc,技术:Spring、Hibernate、JSR-303、JQuery 平台:Windows 我试图实现一个简单的更新用例。请看 Class2包含许多属性,包括Class1。Class2Controller利用Spring创建一个新的Class2对象,并将HttpRequest对象参数绑定到Class2。然后它调用服务,服务又调用DAO。在DAO中,将这个新的Class2对象更新到数据库的最有效方法是什么 备选案文1: 目前在DAO中,我从数据库中检索Class2对象 Class2 class2
平台:Windows 我试图实现一个简单的更新用例。请看 Class2包含许多属性,包括Class1。Class2Controller利用Spring创建一个新的Class2对象,并将HttpRequest对象参数绑定到Class2。然后它调用服务,服务又调用DAO。在DAO中,将这个新的Class2对象更新到数据库的最有效方法是什么 备选案文1:
- 目前在DAO中,我从数据库中检索Class2对象
Class2 class2peristed=em.find(Class2.class,class2Request.getId())代码>
- 使用请求对象和提交中的属性更新检索到的对象
tx.begin(); class2Persisted.setClass1(class2Request.getClass1()); em.merge(class2Request); tx.commit();
- 上面,我只使用setClass1更新了一个属性。但是类2中有许多属性需要更新。有没有其他有效的方法在对象级别而不是在每个属性级别合并class2Persisted和class2Request
- 让Class2Controller检索class2Persisted对象并请求Spring绑定参数
- 我意识到选项2不是一个可行的选项。请参阅我以前遇到的另一个问题。Hibernate将尝试加载相关对象,并在没有自定义约束的情况下抛出
。EntityNotFoundException
以获得验证机会@IdMustExist
如果您有任何其他建议,请提出建议。您应该使用,dynamic update=true来更新实体/表&它经过了高度优化,只会更新值已更改的列,不包括所有字段 您可以使用via注释驱动的pojo @org.hibernate.annotations.Entity(dynamicUpdate=true) 及
class2Persisted和class2Request是否在数据库中是相同的底层行?(例如,它们是否具有相同的唯一ID)?通常,您不应使用合并,而应使用“扩展持久性上下文”