2012-04-02 5 views
2

Est-il possible de compter le nombre de requêtes effectuées en interne par Hibernate dans une transaction ou un thread? J'ai regardé dans les intercepteurs Hibernate, mais il n'était pas évident quelles APIs je devrais remplacer pour incrémenter les compteurs. Mon but est de construire une alarme pour m'avertir quand le nombre de requêtes pour une certaine requête dépasse un certain seuil, ainsi je peux l'optimiser comme nécessaire.Nombre de requêtes Hibernate

Merci,

Sam

Répondre

1

Cet article vous aide?

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

Vous pouvez faire quelque chose comme:

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

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

Et ainsi de suite ...

+1

Say 10 demandes viennent tous ensemble, chacun exécute dans sa propre transaction ou fil. Puis-je indiquer le nombre de requêtes pour chaque requête? Ou sont-ils tous mélangés? –

+0

Ils sont tous mélangés pour un seul [SessionFactory] (http://docs.jboss.org/hibernate/core/3.5/api/org/hibernate/SessionFactory.html#getStatistics()) (dont vous n'avez normalement qu'un seul par application). Vous devriez explorer l'API de statistiques il ya une méthode appelée getQueryStatistics (String queryString) est probablement ce que vous voulez. – MrJames