1. ホーム
  2. java

すべてのEntityManagerをclose()しなければならないのですか?

2023-11-12 13:01:02

質問

自作の永続化フレームワークをJPAに移行し始めたところです。

永続化フレームワークが多くの配管を隠していることを考えると、EntityManagerを閉じないことがリソースリークを引き起こすのか、あるいはフレームワークが私のためにそれらを収集し閉じるのかを知りたいと思います。

私はすべての場所でそれらを閉じるつもりですが、私はそれらを閉じなければならないのでしょうか?

現時点では、NetBeansで簡単に動作するという理由でTopLinkを使用していますが、他のJPAプロバイダを調査することに満足しています。

どのように解決するのですか?

入手方法によって異なります。

EntityManagerFactoryを使用して作成した場合は、どのフレームワークを使用してもクローズする必要があります。

依存性注入を使用して取得した場合(例えばEJBと@PersistenceContextアノテーションを使用)、手動で閉じるべきではありません(AFAIKそれはRuntimeExceptionを引き起こします)。