JPAを使用してレコードを更新するのにベストプラクティスがどのようになるのだろうか?私は現在自分のパターンを考案しましたが、決してベストプラクティスではないと思います。私がしていることは、レコードがデータベースにあるかどうかを調べることです。見つからない場合は、enityManager.persist(object<T>)
メソッドを呼び出します。それが存在する場合、私はentityManager.Merge(Object<T>)
メソッドを呼び出します。openJPAを使用してレコードを更新するときのベストプラクティス
私が尋ねる理由は、マージメソッドがレコードがデータベースにすべて存在するかどうかを調べ、データベースにない場合はレコードを追加することですそれは、必要な変更を行います。また、getTransaction()。begin()およびgetTransaction.commit()でマージ・コールをネストする必要がありますか?ここでは、すでに保存しようとしているエンティティがIDを持っている場合は、私がこれまでに...
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
mergeは、分離されたエンティティから状態を取り、それを引数として取り込み、別の添付されたインスタンスにコピーするためです。コードの残りの部分は、分離されたインスタンスではなく、接続されたインスタンスを使用する必要があります。 –
私はあなたの答えから理解しています。両方の場合にマージが使用されます。しかし、私はオブジェクトに変更がある場合のみ、オブジェクトを更新したいと思います。マージは賢明ですか?あるいは私は別の論理が必要ですか? – Kayser