自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

介紹Hibernate Iterator方法

開發(fā) 后端
這里介紹Hibernate Iterator方法,Hibernate提供了可供選擇的一些方式,但具體使用什么方式,可能用性能/代碼都會有影響。

Hibernate有很多值得學習的地方,這里我們主要介紹Hibernate Iterator方法,包括介紹事務控制等方面。

Hibernate Iterator方法

1.完成同樣一件事,Hibernate提供了可供選擇的一些方式,但具體使用什么方式,可能用性能/代碼都會有影響。顯示,一次返回十萬條記錄(List /Set/Bag/Map等)進行處理,很可能導致內存不夠的問題,而如果用基于游標(ScrollableResults)或Iterator的結果集,則不存在這樣的問題。

2.Session的load/get方法,前者會使用二級緩存,而后者則不使用。

3.Query和list/Iterator,如果去仔細研究一下它們,你可能會發(fā)現(xiàn)很多有意思的情況,二者主要區(qū)別(如果使用了Spring,在HibernateTemplate中對應find,Hibernate Iterator方法):

◆list只能利用查詢緩存(但在交易系統(tǒng)中查詢緩存作用不大),無法利用二級緩存中的單個實體,但list查出的對象會寫入二級緩存,但它一般只生成較少的執(zhí)行SQL語句,很多情況就是一條(無關聯(lián))。

◆Iterator則可以利用二級緩存,對于一條查詢語句,它會先從數(shù)據庫中找出所有符合條件的記錄的ID,再通過ID去緩存找,對于緩存中沒有的記錄,再構造語句從數(shù)據庫中查出,因此很容易知道,如果緩存中沒有任何符合條件的記錄,使用Iterator會產生N+1條SQL語句(N為符合條件的記錄數(shù))

◆通過Hibernate Iterator,配合緩存管理API,在海量數(shù)據查詢中可以很好的解決內存問題,如:

  1. while(it.hasNext()){  
  2. YouObject object = (YouObject)it.next();  
  3. session.evict(youObject);  
  4. sessionFactory.evice(YouObject.class, youObject.getId());  

事務控制

事務方面對性能有影響的主要包括:事務方式的選用,事務隔離級別以及鎖的選用

1.事務方式選用:如果不涉及多個事務管理器事務的話,不需要使用JTA,只有JDBC的事務控制就可以。

2.事務隔離級別:參見標準的SQL事務隔離級別

3.鎖的選用:悲觀鎖(一般由具體的事務管理器實現(xiàn)),對于長事務效率低,但安全。樂觀鎖(一般在應用級別實現(xiàn)),如在Hibernate中可以定義 VERSION字段,顯然,如果有多個應用操作數(shù)據,且這些應用不是用同一種樂觀鎖機制,則樂觀鎖會失效。因此,針對不同的數(shù)據應有不同的策略,同前面許多情況一樣,很多時候我們是在效率與安全/準確性上找一個平衡點,無論如何,優(yōu)化都不是一個純技術的問題,你應該對你的應用和業(yè)務特征有足夠的了解。

【編輯推薦】

  1. 描述Hibernate持久性類
  2. 分析Java應用程序和Hibernate
  3. Hibernate3和JBOSS 3.2強強聯(lián)手
  4. 詳解Hibernate.properties文件
  5. 淺談定制Hibernate映射
責任編輯:佚名 來源: IT168
相關推薦

2009-06-12 16:00:13

Session方法Hibernate

2009-09-22 09:27:29

Hibernate P

2009-09-28 13:49:44

Hibernate Q

2009-09-25 13:55:05

Hibernate使用

2009-09-25 09:46:03

Hibernate s

2009-06-17 11:18:02

Hibernate延遲

2009-09-23 17:41:05

Hibernate事務

2009-09-28 10:24:58

Hibernate基礎

2009-06-05 10:48:01

struts2 ite功能

2009-09-27 14:24:10

Hibernate配置

2009-09-22 10:57:42

Hibernate專業(yè)

2009-09-21 14:50:01

Hibernate部署

2009-09-27 10:10:47

Hibernate處理

2009-06-25 16:52:34

2009-09-24 10:13:05

Hibernate版本

2009-09-25 17:19:28

Hibernate持久

2009-09-23 09:47:23

Hibernate e

2009-06-12 15:09:01

Hibernate優(yōu)化

2009-09-23 16:54:08

Hibernate修改

2009-06-16 16:27:22

Hibernate優(yōu)化
點贊
收藏

51CTO技術棧公眾號