5.4.3. デタッチされたオブジェクトと自動バージョン機能
このパラダイムでは、データストアとの各対話が新しい永続コンテキストで行われます。ただし、データベースとの各対話に対して同じ永続インスタンスが再利用されます。アプリケーションは最初に別の永続コンテキストにロードされたデタッチ済みのインスタンスのステータスを操作し、
EntityManager.merge()
を使用して変更をマージします。
// foo is an instance loaded by a non-extended entity manager foo.setProperty("bar"); entityManager = factory.createEntityManager(); entityManager.getTransaction().begin(); managedFoo = entityManager.merge(foo); // discard foo and from now on use managedFoo entityManager.getTransaction().commit(); entityManager.close();
再び、エンティティマネージャはフラッシュ時にインスタンスバージョンをチェックして、更新が競合する場合は例外をスローします。