十分種學會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" );
如果你想得到所有實體、集合、查詢和緩存區的數據,你可以通過以下方法獲得實體、集合、查詢和緩存區列表: getQueries()、getEntityNames()、 getCollectionRoleNames()和 getSecondLevelCacheRegionNames()。
上面是的例子說明了Hibernate數據記錄技術。
【編輯推薦】




























