2012-04-02 13 views
2

トランザクションまたはスレッドでHibernateが内部的に行ったクエリの数をカウントする方法はありますか?私はHibernateインターセプタを調べましたが、どのAPIをインクリメントカウンタにオーバーライドするべきかは明白ではありませんでした。私の目標は、特定のリクエストのクエリ数があるしきい値を超えたときに私に通知するアラームを作成し、必要に応じて最適化できるようにすることです。Hibernate Query Count

おかげで、

答えて

1

サムこの記事では、あなたを助けますか?

http://www.javalobby.org/java/forums/t19807.html

あなたのような何かを行うことができます:

SessionFactory sessionFactory = getSessionFactoryForApplication(); 
Statistics stats = sessionFactory.getStatistics(); 
stats.setStatisticsEnabled(true); 

// All of the queries that have executed. 
String[] queries = stats.getQueries(); 

のように...

+1

セイ10個の要求はすべて、一緒に独自のトランザクションまたはスレッド内の各実行を来ります。各リクエストのクエリ数を教えてもよろしいですか?あるいは、それらはすべて一緒に混合されていますか? –

+0

これらはすべて単一の[SessionFactory](http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html#getStatistics())のために一緒に混合されます(通常はアプリケーションごとに)。 Statistics APIを探索する必要があります。getQueryStatistics(String queryString)というメソッドがあります。おそらくあなたが望むものです。 – MrJames