EntityManager の使い方について質問があります。1 つのスレッドで単純なデータベース呼び出しごとに EntityManager を開いたり閉じたりするのは賢明ではないことを読みました!
すべての DAO メソッドごとに 1 つの EntityManager を持つのと、DAO メソッドごとに 1 つの EntityManager を持つ方が良いですか?
EntityManager の使い方について質問があります。1 つのスレッドで単純なデータベース呼び出しごとに EntityManager を開いたり閉じたりするのは賢明ではないことを読みました!
すべての DAO メソッドごとに 1 つの EntityManager を持つのと、DAO メソッドごとに 1 つの EntityManager を持つ方が良いですか?
EntityManager を作成し、「作業単位」を実行してから閉じる必要があります。
http://docs.jboss.org/hibernate/stable/entitymanager/reference/en/html_single/#d0e980
作業単位は、挿入、更新、削除、またはより複雑なビジネス ロジックのようなものです。各メソッドには作業単位が含まれている必要があるため、メソッドごとに新しい EntityManager インスタンスを取得する必要があります。
更新: アプリケーションが実行されている限り、またはセッションが開いている限り、開いたままになる Extended EntityManager の概念もあります。ただし、これはコンテナによって管理されます。
EntityとDAOの関係を簡単に説明します。
主に 2 つのエンティティで構成されるオンライン船舶予約システムの例を考えてみましょう。
1.管理者 - 船の詳細などの追加、変更、削除を実行します
2.ユーザー - 船のチケットをオンラインで予約し、オンラインで支払います。
このシナリオでは、管理エンティティ (船の詳細の追加、変更、削除 - このエンティティが実行できるさまざまな種類の機能) の場合、管理エンティティが実行できるすべての機能で構成される 1 つの AdminDAO が必要です。
このエンティティは、任意の Java サーブレット クラスから呼び出されます。
つまり、エンティティごとに 1 つの DAO が必要です。