技術: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