本文向大家介绍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" );
如果你想得到所有实体、集合、查询和缓存区的数据,你可以通过以下方法获得实体、集合、查询和缓存区列表: getQueries()、getEntityNames()、 getCollectionRoleNames()和 getSecondLevelCacheRegionNames()。
上面是的例子说明了Hibernate数据记录技术。
【编辑推荐】