2

JPAでコンテナ管理トランザクション(CMT)がどのように機能するかについての私の理解を明確にする-

CMT を使用すると、トランザクションを明示的に開始してコミットする手間をアプリケーションで省くことができますよね?

CMT はセッションおよびメッセージ駆動型 Bean にのみ適用でき、pojo には適用できませんか?

上記の質問に対する私の根拠は、java-se アプリケーションと java-ee アプリケーションからエンティティにアクセスする方法を知りたいということです。2 つの個別の永続化ユニットが必要ですか?

4

2 に答える 2

1

CMT は、必要なトランザクション処理を透過的に提供する Java EE コンテナによって評価されるアノテーションを使用して宣言的に定義されます。Pojo はコンテナーによって管理されないため、CMT を適用することはできません。

エンティティに関する質問について。永続化ロジックの技術的な詳細を抽象化するために、DAO レイヤーを作成する必要があります。基本的に、1 つの汎用 dao 実装を使用して JPA をサポートできます。これは基本的に、2 つの環境で異なる必要がある唯一の部分です。コンテナーでは、注釈で定義されているように、トランザクションを無料で取得できます。標準の Java SE で実行している場合は、自分でトランザクションを開始/コミット/ロールバックする必要があります。

トランザクションを宣言的に定義し、コンテナー内で実行されることを期待する汎用的な dao 実装を作成することをお勧めします。Java SE で使用するために、コンテナが実際に行うことをエミュレートするために適切なトランザクション処理を処理するこの dao のデコレータがあります。

persistence.xml で何も変更する必要はないと思いますが、ここで間違っているかもしれません

于 2013-04-05T10:56:42.520 に答える