获取Hibernate事务状态

时间:2010-02-14 12:57:19

标签: hibernate transactions status

我在Swing应用程序中使用Hibernate 3.3。我想检索已执行事务的一些统计信息,并将该信息提供给我的视图。例如:

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

我有几个辅助类。我正在考虑使用一些公共字段,如executionTime,noRows,transactionStatus等,并在finalize()方法中填充它们。

Hibernate是否提供了访问此类数据的方法?

1 个答案:

答案 0 :(得分: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以向您提供统计信息。