JPAの実装では、オブジェクトのリストを選択してこれらのオブジェクトを変更するem.find()を行います。次に、トランザクション内でem.merge()を呼び出すこれらの変更されたオブジェクトを更新します他の関連するものを維持するために)。JPAの検索と更新の戦略
これは、SELECTが2回起こっているという事実を除いて素晴らしいことです(私の場合は、冗長でパフォーマンスが良いと感じています)。
em.merge()のトランザクション境界内でfind()を使用することに後者のSELECTを解決しても、私は消極的です。
別のSELECTを発行せずにこれらのオブジェクトを更新する唯一の方法は、独自のNamedQueryを定義することですか?
おかげ
2番目のSELECTはどこで実行されるのか指定できますか? – perissf
find()コールをトランクに持ち込むことになぜ消極的ですか?あなたはどのプロバイダを使用していますか? – Rick
@Rick Selectは(インデックスされていない列のクエリのため)実行に数分かかります。選択実行のための追加時間は、トランザクションのトランザクション時間(JBOSSの制限は5分)です。私は潜在的に時間を増やすことができますが、これを最後のresportオプションとして保持します。 – phewataal