如何在Spring 3.0应用程序中配置Hibernate统计信息?

时间:2011-07-15 14:30:12

标签: java performance hibernate spring jmx

我们如何配置以便在基于Spring MVC的Web应用程序中通过JMX获取Hibernate统计信息。有没有更好的方法来跟踪Hibernate性能。

2 个答案:

答案 0 :(得分:8)

hibernate.generate_statistics设置为true(在persistence.xmlhibernate.cfg.xml或您的会话工厂bean配置中)。然后注册这个bean:

<bean id="hibernateStatisticsMBean" class="org.hibernate.jmx.StatisticsService">
    <property name="statisticsEnabled" value="true" />
    <property name="sessionFactory" value="#{entityManagerFactory.sessionFactory}" />
</bean>

(如果您没有使用JPA,只需指定您的sessionFactory bean而不是通过EMF获取它

最后你需要一个mbean服务器和导出器:

<bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
    <property name="locateExistingServerIfPossible" value="true" />
</bean>

<bean id="jmxExporter" class="org.springframework.jmx.export.MBeanExporter"
    lazy-init="false">
    <property name="server" ref="mbeanServer" />
    <property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
    <property name="beans">
        <map>               
            <entry key="yourkey:name=hibernateStatistics" value-ref="hibernateStatisticsMBean" />
        </map>
    </property>
</bean>

答案 1 :(得分:0)

感谢Bozho的投入。我做了两个更改,如下所示。

 <bean id="jmxExporter"  class="org.springframework.jmx.export.MBeanExporter"         lazy-init="false">    
    <property name="server" ref="mbeanServer" /> 
     <property name="beans">    
    <map>  
          <entry key="Qvantel:name=hibernateStatistics" 
           value-ref="hibernateStatisticsMBean" />   
    </map>  
    </property>  
    <property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING" />  
    </bean>