十分种学会Hibernate数据记录技术

本文向大家介绍Hibernate数据记录,可能好多人还不了解Hibernate数据记录,没有关系,看完本文你肯定有不少收获,希望本文能教会你更多东西。

Hibernate提供了一系列数据记录,其记录的内容包括从最基本的信息到与具体场景的特殊信息。所有的测量值都可以由 Statistics接口进行访问,主要分为三类:

◆使用Session的普通数据记录,例如打开的Session的个数、取得的JDBC的连接数等;

◆实体、集合、查询、缓存等内容的统一数据记录

◆和具体实体、集合、查询、缓存相关的详细数据记录

例如:

你可以检查缓存的命中成功次数,缓存的命中失败次数,实体、集合和查询的使用概率,查询的平均时间等。请注意 Java中时间的近似精度是毫秒。Hibernate的数据精度和具体的JVM有关,在有些平台上其精度甚至只能精确到10秒。

你可以直接使用getter方法得到全局数据记录(例如,和具体的实体、集合、缓存区无关的数据),你也可以在具体查询中通过标记实体名、 或HQL、SQL语句得到某实体的数据记录。请参考Statistics、EntityStatistics、 CollectionStatistics、SecondLevelCacheStatistics、 和QueryStatistics的API文档以抓取更多信息。下面的代码则是个简单的例子:

Statistics stats = HibernateUtil.sessionFactory.getStatistics();  


 



double queryCacheHitCount  = stats.getQueryCacheHitCount();  




double queryCacheMissCount = stats.getQueryCacheMissCount();  




double queryCacheHitRatio =  




  queryCacheHitCount / (queryCacheHitCount + queryCacheMissCount);  



 


log.info("Query Hit ratio:" + queryCacheHitRatio);  


 



EntityStatistics entityStats =  




  stats.getEntityStatistics( Cat.class.getName() );  




long changes =  




        entityStats.getInsertCount()  



        + entityStats.getUpdateCount()  


        + entityStats.getDeleteCount();  


log.info(Cat.class.getName() + " changed " + changes + "times"  ); 

相关推荐