Получить статус транзакции Hibernate - PullRequest
0 голосов
/ 14 февраля 2010

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

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

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

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

1 Ответ

2 голосов
/ 14 февраля 2010

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

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

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

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

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

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

...