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