5

コンテナー管理のエンティティ マネージャーとアプリケーション管理のエンティティ マネージャーの違いを理解するのに問題がありますか?

違いを示す例を教えていただければ幸いです。

4

2 に答える 2

9

コンテナ管理のエンティティ マネージャの場合、コンテナはこのエンティティ マネージャのライフサイクルを管理します。アプリケーション管理の場合、アプリケーション (つまり、プログラマ) がこれを管理します。

close()単純ですが非常に目に見える違いは、アプリケーション管理のエンティティ ファクトリを呼び出す必要があることです。コンテナ管理のものを使用すると、コンテナがこれを行います。

アプリケーション管理のエンティティ マネージャーの永続化コンテキストも、トランザクション スコープではありません。エンティティ マネージャが作成されたときに開始され、エンティティ マネージャが閉じられると終了します。これは、拡張永続コンテキストに多少似ていますが、このタイプのエンティティーマネージャーは、ステートフル Bean だけでなく、どこでも使用できるという違いがあります。

最後に、コンテナが実行している可能性のある (JTA) トランザクションから独立した、リソース ローカル トランザクションを使用するように公式に構成できるのは、アプリケーション管理のエンティティ マネージャーだけです。

Java SE では、アプリケーション管理のエンティティ マネージャーしかないことに注意してください。したがって、Hibernate を Tomcat に追加するだけ (一般的な組み合わせ) では、基本的にアプリケーション管理のエンティティ マネージャーを常に使用していることになります。

于 2012-11-21T10:25:26.283 に答える
0

複数の Java EE アプリケーションが同じデータベースに接続し、JPA エンティティ マネージャー キャッシュを使用している場合。この問題に直面する可能性があります:

1 つのアプリケーションで行われたデータベースの変更は、すぐに他のアプリケーションに反映されない場合があります

コンテナ管理エンティティ マネージャの代わりにアプリケーション管理エンティティ マネージャを使用することは、この問題を解決するための完璧なソリューションです。

私のブログJava EE Example - How to use application managed entitymanager を参照してください。

于 2016-01-22T01:34:48.037 に答える