現在、サーブレットのメソッド内EntityManager
からを取得し、それをサーブレットに渡し、途中で閉じています。EntityManagerFactory
doFilter
Filter
の寿命に関する限り、これは良い習慣EntityManager
ですか? または、別の寿命を持つ必要がありEntityManager
ますか?
現在、サーブレットのメソッド内EntityManager
からを取得し、それをサーブレットに渡し、途中で閉じています。EntityManagerFactory
doFilter
Filter
の寿命に関する限り、これは良い習慣EntityManager
ですか? または、別の寿命を持つ必要がありEntityManager
ますか?
私にはいいですね。
フィルターとサーブレットは、複数のスレッドで同時に使用されます (ステートレスまたはステートフル EJB とは異なります)。そのため、EntityManager
リクエストごとに検索する必要があります。
または、 が必要であることを指定して、Web コンテナーにサーブレットへのアクセスを強制的に同期させることもできます (フィルターについては不明) 。その場合、フィルターまたはサーブレットに一度限りをSingleThreadModel
挿入できます。EntityManager
上記の情報は、Web アプリの PersistenceContextに関するこの投稿からのものです。
を取得するEntityManager
ことは、安価な操作だと思います (工場自体を取得するのとは異なります)。少なくとも、Hibernate の Session と SessionFactory はそうでした。だから私はあなたのオリジナルのデザインに行きます。