2010-02-14 5 views
0

Я использую Hibernate 3.3 в приложении Swing. Я хотел бы получить некоторые данные о выполненной транзакции и сделать эту информацию доступной для моих просмотров. Например:Получить статус транзакции Hibernate

  • время выполнения
  • Количество строк прикоснулся
  • Тип сделки (обновление, удаление, создание, выберите и т.д.)

У меня есть несколько вспомогательных классов. Я думаю, что есть некоторые публичные поля, такие как executeTime, noRows, transactionStatus и т. Д. И заполнять их в методе finalize().

Предоставляет ли Hibernate метод доступа к данным такого типа?

ответ

2

Да, Hibernate предоставляет статистику в реальном времени. Пример использования из книги Hibernate:

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

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

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

The статистика интерфейсы Statistics для глобальной информации, EntityStatistics для получения информации о конкретной сущности, CollectionStatistics для той или иной роли сбора, QueryStatistics для SQL и запросов HQL и SecondLevelCacheStatistics для детального выполнения информацию о конкретном регионе в дополнительном кэше данных второго уровня. Удобный способ: logSummary(), который выдает полное сводку на консоль с помощью одного вызова. Если вы хотите включить сбор статистики через конфигурацию, а не программно, установите для свойства конфигурации hibernate.generate_statistics значение true. Дополнительную информацию о различных методах поиска статистики см. В документации по API.

Если вы работаете на сервере приложений, вы также можете настроить JMX для предоставления вам статистики.

+0

Спасибо, но я не могу найти способ получения полного времени выполнения транзакции. – matiasf

Смежные вопросы