2012-04-02 71 views
2

有没有什么方法可以统计Hibernate在事务或线程内部完成的查询数?我研究了Hibernate拦截器,但是我不知道应该重写哪些API来增加计数器。我的目标是在某个请求的查询计数超过某个阈值时通知我,以便我可以根据需要对其进行优化。休眠查询计数

感谢,

山姆

回答

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的请求都来在了一起,在自己的事务或线程每个运行。我可以告诉每个请求的查询计数吗?或者他们都混在一起? – 2012-04-03 00:39:43

+0

它们全部混合在一起[SessionFactory](http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html#getStatistics())(通常你只有一个每个应用程序)。你应该探索统计API有一个名为getQueryStatistics(String queryString)的方法可能是你想要的。 – MrJames 2012-04-03 00:51:02