企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 19.6.1\. 监测SessionFactory 你可以有两种方式访问`SessionFactory`的数据记录,第一种就是自己直接调用 `sessionFactory.getStatistics()`方法读取、显示`统计`数据。 此外,如果你打开`StatisticsService` MBean选项,那么Hibernate则可以使用JMX技术 发布其数据记录。你可以让应用中所有的`SessionFactory`同时共享一个MBean,也可以每个 SessionFactory分配一个MBean。下面的代码即是其演示代码: ``` // MBean service registration for a specific SessionFactory Hashtable tb = new Hashtable(); tb.put("type", "statistics"); tb.put("sessionFactory", "myFinancialApp"); ObjectName on = new ObjectName("hibernate", tb); // MBean object name StatisticsService stats = new StatisticsService(); // MBean implementation stats.setSessionFactory(sessionFactory); // Bind the stats to a SessionFactory server.registerMBean(stats, on); // Register the Mbean on the server ``` ``` // MBean service registration for all SessionFactory's Hashtable tb = new Hashtable(); tb.put("type", "statistics"); tb.put("sessionFactory", "all"); ObjectName on = new ObjectName("hibernate", tb); // MBean object name StatisticsService stats = new StatisticsService(); // MBean implementation server.registerMBean(stats, on); // Register the MBean on the server ``` TODO:仍需要说明的是:在第一个例子中,我们直接得到和使用MBean;而在第二个例子中,在使用MBean之前 我们则需要给出SessionFactory的JNDI名,使用`hibernateStatsBean.setSessionFactoryJNDIName("my/JNDI/Name")` 得到SessionFactory,然后将MBean保存于其中。 你可以通过以下方法打开或关闭`SessionFactory`的监测功能: * 在配置期间,将`hibernate.generate_statistics`设置为`true`或`false`; * 在运行期间,则可以可以通过`sf.getStatistics().setStatisticsEnabled(true)` 或`hibernateStatsBean.setStatisticsEnabled(true)` 你也可以在程序中调用`clear()`方法重置统计数据,调用`logSummary()` 在日志中记录(info级别)其总结。