如何访问 Hibernate 统计信息

Posted

技术标签:

【中文标题】如何访问 Hibernate 统计信息【英文标题】:How to get access to the Hibernate Statistics 【发布时间】:2010-10-13 04:26:28 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

我宁愿使用 Hibernate Statistics published via JMX 如果你使用 spring 你可以使用 Hibernate Statistics MBean with Spring 让它变得非常容易

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

您还可以为其添加记录器。 看; 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>

【讨论】:

【参考方案5】:

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

以编程方式

如果你想在你的应用程序中获取Statistics对象,你可以这样做:

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

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

记录

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

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

JMX

您还可以通过设置hibernate.jmx.enabled 属性通过JMX 公开Statistics 对象。

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

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

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

【讨论】:

以上是关于如何访问 Hibernate 统计信息的主要内容,如果未能解决你的问题,请参考以下文章

如何在 grails 应用程序中监控 Hibernate 统计信息(缓存命中和未命中)?

如何从 Windows 程序访问类似 netstat 的以太网统计信息

访问 ZFile (JZOS) 的统计信息/成员信息

如何实现ASP.NET中网站访问量的统计

如何添加网站统计代码并查询访客ip浏览访问量

访问 Marshmallow 之前的网络使用历史和统计信息