hibernate效能優化提高
1. 快取(hibernate缺省會用到快取,用得好就能大大提高效能,用得不好就會影響到效率;快取其實就是資料庫資料在記憶體中的乙個臨時容器,將查詢過得資料暫時放在這個容器中,下次如果還是查詢一樣的,就直接在該容器中取得,就不用再去資料庫裡查詢了,這樣間接性的提高了效率。):
a)一級快取;
i.即在當前事務範圍內的資料快取;
ii.就hibernate 來講,(一級快取)事務級快取是基於session的宣告週期實現的;
b)二級(應用級)快取;
i.此快取可由多個事務共享;
ii.在hibernate 中,應用級快取由session factory實現;
iii. 使用第三方快取元件:ehcache (易 h kei 奇)
c)分布式快取;
i.即在多個應用例項,多個jvm間共享的快取策略;
2. get()和load()的區別:
a)查詢沒有的資料,get()會返回null,load()會報錯,丟擲找不到的異常;
b)load()的效率比get()的效率高;
c)get()直接去資料庫裡面找,load()會先去混存的臨時的容器裡去找,沒有就會去找**物件,在沒有才會去資料庫裡進行查詢,查詢後只返回乙個**物件,而get()是一定要返回乙個真實物件;
3.混存同步策略:
a)read-only :唯讀,對於不會發生改變的資料可使用;不會進行更新
b)nonstrict-read-write
c)read-write:嚴格的讀寫快取;
d)transactional:事務性快取;
4.延遲載入:
a)在有關聯的持久類物件中,對乙個物件進行的查詢也會對另乙個物件進行查詢;
b)所謂延遲載入就是當在真正需要資料的時候,才真正執行資料載入操作;
c)hibernate 3.x的lazy (延遲載入)預設值是true,需要注意;
5.hibernate 的悲觀和樂觀鎖:
a)hibernate支援兩種鎖機制:
i.「悲觀鎖(pessimistic locking)」
ii.「樂觀鎖(optimistic locking)」
b) 資料庫裡面用到的所有鎖都是「悲觀鎖」;
c) 從效率上講「悲觀鎖」的效率不高;
d) 「樂觀鎖」在資料中有一種機制,多了一列就是版本號,樂觀鎖就是靠版本資料機制實現的;當對資料進行不斷的操作時,樂觀鎖也會不斷的更新;更新之前,它會先檢查資料庫裡的版本號,是否發生過改變,如果發生了改變,那麼樂觀鎖的操作將會無效;
hibernate 的效能優化
一級快取 session級別的快取 listusers list session.createquery sql iteratorusers iterator session.createquery sql list 直接資料庫載入user iterator 讀出來的是id 先在session中找 ...
hibernate 效能優化2
初用hibernate的人也許都遇到過效能問題,實現同一功能,用hibernate與用jdbc效能相差十幾倍很正常,如果不及早調整,很可能影響整個專案的進度。大體上,對於hibernate效能調優的主要考慮點如下 資料庫設計調整 hql優化 api的正確使用 如根據不同的業務型別選用不同的集合及查詢...
Hibernate效能優化策略
1 快取機制 a 基本快取 session快取 一級快取 session中儲存了乙個map id po po 持久化物件 b 二級快取 全域性快取 sessionfactory 1 過度使用的問題 記憶體會被過度占用,會導致系統效能急劇下降。2 使用條件 i 快取的資料比較穩定 變動不頻繁 如 部門...