2

現在、サーブレットのメソッド内EntityManagerからを取得し、それをサーブレットに渡し、途中で閉じています。EntityManagerFactorydoFilterFilter

の寿命に関する限り、これは良い習慣EntityManagerですか? または、別の寿命を持つ必要がありEntityManagerますか?

4

1 に答える 1

5

私にはいいですね。

フィルターとサーブレットは、複数のスレッドで同時に使用されます (ステートレスまたはステートフル EJB とは異なります)。そのため、EntityManagerリクエストごとに検索する必要があります。

または、 が必要であることを指定して、Web コンテナーにサーブレットへのアクセスを強制的に同期させることもできます (フィルターについては不明) 。その場合、フィルターまたはサーブレットに一度限りをSingleThreadModel挿入できます。EntityManager

上記の情報は、Web アプリの PersistenceContextに関するこの投稿からのものです。

を取得するEntityManagerことは、安価な操作だと思います (工場自体を取得するのとは異なります)。少なくとも、Hibernate の Session と SessionFactory はそうでした。だから私はあなたのオリジナルのデザインに行きます。

于 2012-04-11T09:45:03.270 に答える