2 つの質問があります。
- Spring は、Spring Container によって作成された SessionFactory クラスをいつ閉じますか (SessionFactory はコンテナーで定義されます)。
- Hibernate はデフォルトで一次キャッシュを維持します。キャッシュの範囲は、セッションまたは sessionFactory に限定されていますか? つまり、一次キャッシュのメモリが解放されるのはいつですか?
Springは、Springコンテナによって作成されたSessionFactoryクラスをいつ閉じますか(SessionFactoryはコンテナで定義されています)?
これは、シャットダウン時に自動的に実行されますApplicationContext
(Webアプリケーションのデプロイ解除、JVMの正常なクローズなど)。コンテナーがシャットダウンされると、すべてのBeanのインターフェースdestroy()
からメソッドが呼び出されます。DisposableBean
そのようなメソッドの1つは、次のように定義されていLocalSessionFactoryBean
ます。
public void destroy() {
this.sessionFactory.close();
}
これについてはまったく気にする必要はありません。
Hibernateはデフォルトでプライマリキャッシュを維持します。キャッシュの範囲はセッションまたはsessionFactoryに制限されていますか?つまり、プライマリキャッシュのメモリはいつ解放されますか?
「プライマリ」キャッシュは第1レベルのキャッシュと呼ばれ、セッションに関連付けられています。2番目のレベルのキャッシュはグローバルですが、 ehcacheなどの外部キャッシュプロバイダーを使用している可能性が高いため、閉じたSessionFactory
ときに解放されません。この場合、そのメモリを解放するためにEhCacheも閉じる必要があります。ただし、EhCacheサポートが使用されている場合は、これもSpringコンテナで処理する必要があります。SessionFactory