日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
介紹HibernateIterator方法

Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹Hibernate Iterator方法,包括介紹事務(wù)控制等方面。

十多年的江口網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整江口建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“江口網(wǎng)站設(shè)計(jì)”,“江口網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

Hibernate Iterator方法

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

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

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

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

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

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

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

事務(wù)控制

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

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

2.事務(wù)隔離級(jí)別:參見標(biāo)準(zhǔn)的SQL事務(wù)隔離級(jí)別

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


分享文章:介紹HibernateIterator方法
本文URL:http://www.dlmjj.cn/article/djjjpdo.html