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 レベルです)。