persistとmerge

現プロジェクト(KuinaDAO使用)で、非常に重い処理を施している箇所があり。
よくよく調べてみると、エンティティを
persist
している部分が原因でした。

persistする前に二回もmerge処理が入っていて、それも気になりましたが…(´・ω・`)


とは言え、persistとmergeの違いがよく分からなかったので、外注さん協力の下、
こちらのブログを見て学びました(・∀・)

以下、簡潔にまとめると

■persist⇒エンティティを明示的に新しいオブジェクトとして扱う場合に使用
■merge⇒更新でも新規作成でもどちらでも構わない場合に使用

件の重い処理の部分では、新規登録として扱う必要の無いエンティティに対して
「persist」
を使っていたため、重くなっていたのでした。


「merge」
に変えた瞬間、非常に処理が速くなりました@@