2

2 つの質問があります。

  • Spring は、Spring Container によって作成された SessionFactory クラスをいつ閉じますか (SessionFactory はコンテナーで定義されます)。
  • Hibernate はデフォルトで一次キャッシュを維持します。キャッシュの範囲は、セッションまたは sessionFactory に限定されていますか? つまり、一次キャッシュのメモリが解放されるのはいつですか?
4

1 に答える 1

1

Springは、Springコンテナによって作成されたSessionFactoryクラスをいつ閉じますか(SessionFactoryはコンテナで定義されています)?

これは、シャットダウン時に自動的に実行されますApplicationContext(Webアプリケーションのデプロイ解除、JVMの正常なクローズなど)。コンテナーがシャットダウンされると、すべてのBeanのインターフェースdestroy()からメソッドが呼び出されます。DisposableBeanそのようなメソッドの1つは、次のように定義されていLocalSessionFactoryBeanます。

public void destroy() {
    this.sessionFactory.close();
}

これについてはまったく気にする必要はありません。

Hibernateはデフォルトでプライマリキャッシュを維持します。キャッシュの範囲はセッションまたはsessionFactoryに制限されていますか?つまり、プライマリキャッシュのメモリはいつ解放されますか?

「プライマリ」キャッシュは第1レベルのキャッシュと呼ばれ、セッションに関連付けられています。2番目のレベルのキャッシュはグローバルですが、 などの外部キャッシュプロバイダーを使用している可能性が高いため、閉じたSessionFactoryときに解放されません。この場合、そのメモリを解放するためにEhCacheも閉じる必要があります。ただし、EhCacheサポートが使用されている場合は、これもSpringコンテナで処理する必要があります。SessionFactory

も参照してください

于 2012-05-28T13:29:39.520 に答える