十分種學會Hibernate數(shù)據(jù)記錄技術(shù)
本文向大家介紹Hibernate數(shù)據(jù)記錄,可能好多人還不了解Hibernate數(shù)據(jù)記錄,沒有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
Hibernate提供了一系列數(shù)據(jù)記錄,其記錄的內(nèi)容包括從最基本的信息到與具體場景的特殊信息。所有的測量值都可以由 Statistics接口進行訪問,主要分為三類:
◆使用Session的普通數(shù)據(jù)記錄,例如打開的Session的個數(shù)、取得的JDBC的連接數(shù)等;
◆實體、集合、查詢、緩存等內(nèi)容的統(tǒng)一數(shù)據(jù)記錄
◆和具體實體、集合、查詢、緩存相關(guān)的詳細數(shù)據(jù)記錄
例如:
你可以檢查緩存的命中成功次數(shù),緩存的命中失敗次數(shù),實體、集合和查詢的使用概率,查詢的平均時間等。請注意 Java中時間的近似精度是毫秒。Hibernate的數(shù)據(jù)精度和具體的JVM有關(guān),在有些平臺上其精度甚至只能精確到10秒。
你可以直接使用getter方法得到全局數(shù)據(jù)記錄(例如,和具體的實體、集合、緩存區(qū)無關(guān)的數(shù)據(jù)),你也可以在具體查詢中通過標記實體名、 或HQL、SQL語句得到某實體的數(shù)據(jù)記錄。請參考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" );
如果你想得到所有實體、集合、查詢和緩存區(qū)的數(shù)據(jù),你可以通過以下方法獲得實體、集合、查詢和緩存區(qū)列表: getQueries()、getEntityNames()、 getCollectionRoleNames()和 getSecondLevelCacheRegionNames()。
上面是的例子說明了Hibernate數(shù)據(jù)記錄技術(shù)。
【編輯推薦】