如何访问Hibernate Statistics

时间:2009-03-13 14:51:34

标签: java hibernate jpa jboss java-ee

所以在persistence.xml我打开了hibernate.generate_statistics

<property name="hibernate.generate_statistics">true</property>

我的问题是如何访问它们?统计数据在哪里?

5 个答案:

答案 0 :(得分:20)

在你的dao服务中,你可以去:

Session session = this.sessionFactory.getCurrentSession();
SessionStatistics sessionStats = session.getStatistics();
Statistics stats = this.sessionFactory.getStatistics(); 

答案 1 :(得分:12)

我宁愿使用Hibernate Statistics published via JMX如果您使用弹簧,也可以通过Hibernate Statistics MBean with Spring

轻松实现

答案 2 :(得分:2)

在我们的应用程序中,我们通过JMX发布它并使其完整,我们可以手动add the criteria query data using aspects

答案 3 :(得分:2)

您还可以为其添加记录器。 看到; http://www.thoughts-on-java.org/how-to-activate-hibernate-statistics-to-analyze-performance-issues/

<!--Hibernate Statistics-->
            <logger category="org.hibernate.stat" use-parent-handlers="true">
                <level name="DEBUG"/>
            </logger>

答案 4 :(得分:1)

您可以通过多种方式访问​​休眠统计信息:

以编程方式

如果要在应用程序中获取Statistics对象,可以按以下步骤进行操作:

Session session = entityManager.unwrap(Session.class);

Statistics statistics = session.getSessionFactory().getStatistics();

记录

如果要记录Statistics报告,则需要添加以下日志配置条目:

<logger name="org.hibernate.engine.internal.StatisticalLoggingSessionEventListener" level="info"/>

JMX

您还可以通过JMX公开Statistics对象,如this article中所述。

为此,您需要设置以下配置属性:

<property name="hibernate.jmx.enabled" value="true"/>

并在JMX客户端应用程序中找到org.hibernate.core MBean软件包。

如果您想更好地了解Hibernate支持的指标,请查看this article