Hibernate:生成统计信息

mai*_*rgs 20 java jboss hibernate jpa java-ee

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

<property name="hibernate.generate_statistics">true</property>
Run Code Online (Sandbox Code Playgroud)

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

ser*_*erg 20

在您的dao服务中,您可以:

Session session = this.sessionFactory.getCurrentSession();
SessionStatistics sessionStats = session.getStatistics();
Statistics stats = this.sessionFactory.getStatistics(); 
Run Code Online (Sandbox Code Playgroud)


Mic*_*low 12

我宁愿使用通过JMX发布的Hibernate Statistics,如果你使用spring,你可以使用Spring的Hibernate Statistics MBean使它变得非常简单


Vla*_*cea 10

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

以编程方式

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

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

Statistics statistics = session.getSessionFactory().getStatistics();
Run Code Online (Sandbox Code Playgroud)

记录

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

<logger name="org.hibernate.engine.internal.StatisticalLoggingSessionEventListener" level="info"/>
Run Code Online (Sandbox Code Playgroud)

吉米克斯

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

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

<property name="hibernate.jmx.enabled" value="true"/>
Run Code Online (Sandbox Code Playgroud)

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