2010-02-14 9 views
0

我在Swing应用程序中使用Hibernate 3.3。我想检索执行的交易中的一些统计信息,并将这些信息提供给我的观点。例如:获取休眠事务状态

  • 执行时间
  • 行数触及
  • 类型的交易(更新,删除,创建,选择等)

我有几个辅助类。我正在考虑使用诸如executionTime,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(); 

的统计数据接口Statistics全球信息,EntityStatistics关于特定实体,CollectionStatistics特定集合的作用,QueryStatistics用于SQL和HQL查询的信息,并SecondLevelCacheStatistics详细运行有关可选二级数据高速缓存中特定区域的信息。一个简便的方法是logSummary(),它通过一次调用将完整的摘要打印到控制台。如果要通过配置启用统计信息收集,而不是编程方式,请将hibernate.generate_statistics配置属性设置为true。有关各种统计信息检索方法的更多信息,请参阅API文档。

如果您正在应用程序服务器中运行,还可以配置JMX以提供统计信息。

+0

谢谢,但我似乎无法找到获取总交易执行时间的方法。 – matiasf 2010-02-14 13:32:41