19.6. パフォーマンスのモニタリング
最適化はモニタリングやパフォーマンスを示す数値がなければ十分に行えません。 Hibernate は内部処理のすべての範囲の数値を提供します。 Hibernate の統計情報は
SessionFactory
単位で取得可能です。
19.6.1. SessionFactory のモニタリング
SessionFactory
のメトリクスにアクセスするには2つの方法があります。最初の方法は、 sessionFactory.getStatistics()
を呼び出し、自分で Statistics
の読み込みや表示を行います。
StatisticsService
MBean を有効にしていれば、Hibernate は JMX を使ってメトリクスを発行することもできます。1つの MBean をすべての SessionFactory
に対して有効にするか、SessionFactory ごとに一つの MBean を有効にすることが出来ます。最小限の設定例については、以下のコードを見てください:
// MBean service registration for a specific SessionFactory Hashtable tb = new Hashtable(); tb.put("type", "statistics"); tb.put("sessionFactory", "myFinancialApp"); ObjectName on = new ObjectName("hibernate", tb); // MBean object name StatisticsService stats = new StatisticsService(); // MBean implementation stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory server.registerMBean(stats, on); // Register the Mbean on the server
// MBean service registration for all SessionFactory's Hashtable tb = new Hashtable(); tb.put("type", "statistics"); tb.put("sessionFactory", "all"); ObjectName on = new ObjectName("hibernate", tb); // MBean object name StatisticsService stats = new StatisticsService(); // MBean implementation server.registerMBean(stats, on); // Register the MBean on the server
SessionFactory
に対してモニタリングの開始や終了を行うことが出来ます。
- 設定時には、
hibernate.generate_statistics
をfalse
にします
- 実行時に、
sf.getStatistics().setStatisticsEnabled(true)
またはhibernateStatsBean.setStatisticsEnabled(true)
を呼び出します
統計は
clear()
メソッドを使ってプログラムでリセットすることが出来ます。サマリは logSummary()
メソッドを使って logger に送ることが出来ます(info レベルです)。