在Hibernate程序中如果配置了二级缓存,想查看一下二级缓存中存放的数据条数,查询时错过的数据条数,缓存命中率等信息,那么该怎么办呢?
在Hibernate的hibernate.cfg.xml文件中,提供了hibernate.generate_statistics属性,该属性提供了Hibernate应用中操作的统计信息,必须在hibernate.cfg.xml文件中进行配置。该属性在配置文件中的默认值是关闭的,因为它会消耗一些资源,但是它很适合在我们开发过程中调试程序时使用。hibernate.cfg.xml文件中的配置如下:
<property name="generate_statistics">true</property/>
这时我们已经将Hibernate的统计信息打开了,接下来我们应该怎样使用它呢?
在org.hibernate.SessionFactory类中提供了一个得到统计信息的方法,该方法返回一个Statistic类型的数据。之后我们通过Statistics对象取出数据操作时的缓存信息。它提供了取出全部统计信息和取出指定缓存的统计信息,例如:我们就想查看二级缓存中的统计信息,那么可以通过方法指定。例如:我们添加一条数据,该方法是addPet(),将该方法放到main()方法中测试,如下:
addPet()方法的实现:
public void addPet(){
// 创建一个Hibernate Configuration类的实例
Configuration config = new Configuration().configure() ;
// 创建SessionFactory对象
SessionFactory sf = config.buildSessionFactory() ;
// 调用调添加方法
PetDaoImpl petImpl = new PetDaoImpl();
petImpl.add();
// 创建Statistics对象,并通过SessionFactory对象获得统计信息
Statistics st = sf.getStatistics();
// 打印全部统计信息
System.out.println(st);
// 打印二级缓存信息
System.out.println(st.getSecondLevelCacheHitCount());
}
将addPet()方法添加到main()方法中进行测试,将会输出统计信息。