Hibernate效能優化

2021-06-26 04:51:42 字數 1292 閱讀 8799

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 快取的資料比較穩定 變動不頻繁 如 部門...