我想知道使用JPA更新記錄的最佳做法是什麼?我目前制定了自己的模式,但我懷疑這絕不是最佳做法。我所做的實質上是查看記錄是否在分貝中,如果我沒有找到它,我會調用enityManager.persist(object<T>)
方法。如果確實存在,我打電話給entityManager.Merge(Object<T>)
方法。當使用openJPA更新記錄時的最佳實踐
我問的原因是我發現merge方法查看記錄是否在數據庫中已準備好,如果它不在db中,那麼它會繼續添加它,如果它是,它使必要的變化。另外,是否需要在getTransaction()。begin()和getTransaction.commit()中嵌套合併調用?以下是我迄今爲止...
try{
launchRet = emf.find(QuickLaunch.class, launch.getQuickLaunchId());
if(launchRet!=null){
launchRet = emf.merge(launch);
}
else{
emf.getTransaction().begin();
emf.persist(launch);
emf.getTransaction().commit();
}
}
所以基本上我應該擺脫我有的if-else子句?爲什麼我會返回價值btw? – SoftwareSavant
由於合併從分離的實體中獲取狀態,因此將其作爲參數,並將其複製到另一個附加的實例。其餘的代碼應該使用附加的實例而不是分離的實例。 –
據我的理解你的答案。合併用於這兩種情況。但是我只想在對象發生變化時更新對象。合併巧妙嗎?或者我需要另一種邏輯? – Kayser