1EntityManagerFactory
つ (または複数) のEntityManager
インスタンスを作成できる があります。私はサーブレット環境を使用しており、サーブレットの存続期間中 (したがって、すべてのユーザーに対して) 共有される (サーブレットコンテキストを介して) サーブレットに接続された 1 つの EntityManagerFactory があります。
次のいずれかを実行できます。
- サーブレットの存続期間中、単一の EntityManager を作成します (たとえば、すべてのユーザー間で共有)
- ユーザーごとに 1 つ作成します (したがって、各ユーザーは HttpSession で独自のものを取得します)。
- HTTP リクエストごとに 1 つ作成します (たとえば、新しいものをインスタンス化し、
doGet
メソッドの最後で閉じることによって)
どれが最も適切ですか? EntityManager を作成するコストは重要ですか? 単一の共有 EntityManager を実行する場合、単一のトランザクション スコープがありますか (つまり、独立したユーザー間の更新は他の変更をコミットできますか)?