技术:spring,hibernate的,JSR-303,JQuery的
平台:视窗JPA:什么是合并分离对象的有效方式?
我想实现一个简单的更新使用案例。请参阅DAO/Service/Controller Source Code Link
Class2包含许多属性,包括Class1。 Class2Controller利用Spring创建一个新的Class2对象并将HttpRequest对象参数绑定到Class2。然后它调用服务,然后调用DAO。在DAO中,将这个新的Class2对象更新为数据库的最有效方法是什么?
选项1:
目前在DAO,我从数据库中检索的Class2对象。
Class2 class2Persisted = em.find(Class2.class, class2Request.getId());
更新检索与从请求对象属性对象和提交
tx.begin(); class2Persisted.setClass1(class2Request.getClass1()); em.merge(class2Request); tx.commit();
以上,我只更新使用setClass1一个性质。但是Class2中有很多属性需要更新。还有其他有效的方式将class2Persisted与class2Request合并到对象级别而不是在每个属性级别?
选项2
让Class2Controller检索class2Persisted对象和请求弹簧结合参数。
我意识到选项2不是一个可行的选项。请参阅我之前遇到的另一个问题link。 Hibernate会尝试加载关联的对象,并会抛出
EntityNotFoundException
而我的自定义约束@IdMustExist
得到验证的机会。
请建议您是否有其他建议。
是在class2Persisted和class2Request相同的底层行(S) D b? (例如他们是否有相同的唯一ID)? – rhinds 2011-05-20 16:43:43