0

私は現在、個々のエンティティ オブジェクトがアトミック トランザクションで複数回更新される可能性がある、トリッキーな更新タスクをプログラミングしています。私のマージ操作は次のようになります (わかりやすくするためにtry / catchを省略しています)。

@PersistenceContext protected EntityManager   em;
@Resource           protected UserTransaction utx;    
...
utx.begin();
for (Record r : listOfRecords) em.merge(r);
utx.commit();

リスト内の特定のエンティティへの参照が複数ある場合、何か悪いことが起こりますか?

これは、JPA プロバイダーとして EclipseLink 2.3.2 を使用しています。

4

1 に答える 1

1

永続コンテキスト :永続コンテキストは、永続エンティティ ID に対して一意のエンティティ インスタンスが存在する一連の管理対象エンティティ インスタンスです。永続化コンテキスト内では、エンティティ インスタンスとそのライフサイクルはエンティティ マネージャーによって管理されます。

merge() :指定されたエンティティの状態を現在の永続化コンテキストにマージします。

したがって、永続コンテキストには、エンティティのインスタンスが一度に 1 つしか存在しません。したがって、エンティティを複数回更新しても、データベースに反映されるのは、トランザクションがコミットされたときに 1 回だけです。

于 2012-04-05T05:54:59.223 に答える