2010-02-14 6 views
0

J'utilise Hibernate 3.3 dans une application Swing. Je voudrais récupérer quelques statistiques sur la transaction effectuée et rendre cette information disponible à mes vues. Par exemple:Obtenir l'état de la transaction Hibernate

  • Temps d'exécution
  • Nombre de lignes touché
  • Type de transaction (mise à jour, supprimer, créer, sélectionner, etc.)

J'ai plusieurs classes d'aide. Je pense avoir des champs publics comme executionTime, noRows, transactionStatus etc et les remplir dans la méthode finalize().

Est-ce que Hibernate fournit une méthode pour accéder à ce type de données?

Répondre

2

Oui, Hibernate fournit des statistiques en direct. Exemple d'utilisation du livre Hibernate:

Statistics stats = HibernateUtil.getSessionFactory().getStatistics(); 
stats.setStatisticsEnabled(true); 
... 

stats.getSessionOpenCount(); 
stats.logSummary(); 

EntityStatistics itemStats = stats.getEntityStatistics("auction.model.Item"); 
itemStats.getFetchCount(); 

Les statistiques interfaces sont Statistics pour l'information mondiale, EntityStatistics des informations sur une entité particulière, CollectionStatistics pour un rôle de collection, QueryStatistics pour les requêtes SQL et HQL et SecondLevelCacheStatistics pour l'exécution détaillée des informations sur une région particulière dans le cache de données de second niveau facultatif. Une méthode pratique est logSummary(), qui imprime un résumé complet à la console avec un seul appel. Si vous souhaitez activer la collecte de statistiques via la configuration et non par programmation, définissez la propriété de configuration hibernate.generate_statistics sur true. Voir la documentation API pour plus d'informations sur les différentes méthodes de récupération de statistiques.

Si vous utilisez un serveur d'applications, vous pouvez également configurer JMX pour qu'il vous fournisse des statistiques.

+0

Merci, mais je n'arrive pas à trouver une méthode pour obtenir le temps d'exécution total de la transaction. – matiasf