我在 Swing 应用程序中使用 Hibernate 3.3。我想检索有关已执行交易的一些统计信息,并将该信息提供给我的视图。例如:
- 执行时间处理时间
- 接触的行数
- 事务类型(更新、删除、创建、选择等)
我有几个助手类。我正在考虑使用一些公共字段,例如 executionTime、noRows、transactionStatus 等,并将它们填充到 finalize() 方法中。
Hibernate 是否提供了访问此类数据的方法?
我在 Swing 应用程序中使用 Hibernate 3.3。我想检索有关已执行交易的一些统计信息,并将该信息提供给我的视图。例如:
我有几个助手类。我正在考虑使用一些公共字段,例如 executionTime、noRows、transactionStatus 等,并将它们填充到 finalize() 方法中。
Hibernate 是否提供了访问此类数据的方法?
是的,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 以提供统计信息。