• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            tbwshc

            tbw

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(4)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

              第一次去面試的時候人家人如何在SSH框架下,如何進行Hibernate的優化,當時自己只是看到這些根本就沒有系統的總結這些東西,今天終于找到一個時間來解決一下自己面試的這個問題了。

            Hibernate自述

                       我天生效率比較低,在普遍情況下,需要將執行轉換為SQL語句的Hibernate低于直接JDBC存取。但是在經過tb比較好的性能優化之后,我的性能還是讓人相當滿意的,特別是應用二級緩存之后,甚至可以獲得比較不使用緩存的JDBC更好的性能。

            優化總結

                       要想優化Hibernate,我們必須知道應該從什么地方進行優化,從什么地方入手。Hibernate的優化方向:數據庫設計、HQL優化、緩存、主配置、延遲加載、方法選用、集合選用、事物控制、批量操作

             

            具體分析

            第一點:數據庫設計

                   前邊博客介紹過 數據庫設計,今天我們還從這開始,表的設計就是建樓的基礎,如何讓基礎簡潔而結實這是最重要的。

            優化策略:

            1.   建索引

            2.   減少表之間的關聯

            3.   簡化查詢字段,沒用的字段不要,已經對返回結果的控制,盡量返回少量數據

            4.   適當的冗余數據,不過分最求高范式

            第二點:HQL優化


                                                        (HQL知識圖)

                 假如想好好了解一下的建議看一下這篇博客HQL詳細使用,我個人認為寫的還可以,知識總結的很細致。

            總結:

            1.   實體查詢:可以使用sql語句查詢

            2.   實體的更新和刪除:hibernate3中直接提供更加靈活更加效率的解決方法

            3.   屬性查詢:動態構造實例對象,對結果集進行封裝

            4.   分組與排序:

            A.   Order by子句

            B.   Group by子句與統計查詢

            C.   優化統計查詢:內連接,外連接

            5.   參數綁定:和jdbc一樣,對hibernate的參數綁定提供了豐富的支持。

            第三點:緩存

            運行機制:

            介于應用程序和物理數據源之間,其作用是為了降低應用程序對物理數據源訪問的頻數,從而提高運行性能。

            緩存被廣泛應用的用于優化數據庫。當一些數據被從數據庫中讀取出來的時候,我們可以把它們放到緩存里。這樣我們可以再次使用的時候直接從緩存中取出來,這樣我們的效率就提高了很多。

            控制范圍:

            一級緩存是session對象的生命周期通常對應的一個數據庫事務或者一個應用事務,它是事務范圍內的緩存

            二級緩存是一個可插拔的緩存插件,它是由SessionFactory負責管理。由于SessionFactory對象的生命周期和應用程序的整個過程對應,所以二級緩存是進城范圍或者集群范圍內的緩存。用于初始化很少更改的數據、不重要的數據,不會并發訪問的數據。

             

            Hibernate緩存的一些問題和建議:hibernate的緩存

            第四點:捉取策略

            1.  捉取優化:Hibernate在關聯關系之間進行導航,充分利用Hibernate提供的技術

            2.  如何捉取

            立即捉取:當捉取宿主對象時,同時捉取其相關對象和關聯集以及屬性

            延遲加載:當捉宿主對象時,并不捉取其關聯對象,而是當對其對象進行調用時才加載。

            3.  捉取粒度:設置捉取個數

            第五點:批量數據處理(修改和刪除)

            在Hibernate2中,如果需要對任何數據進行修改和刪除操作都需要先執行查詢操作,在得到數據后才進行修改和刪除。

            1.  不適用Hibernate API而是直接使用JDBC  API來做原生態SQL語句進行查詢,這種方法比較好,相對來說較快。

            2.  運用存儲過程

            3.  一定量范圍內可以使用hibernate API,但是特大數據量不行。

            第六點:結果集的使用:

                 結果集的使用:list()和iterator()區別

            查詢方式:

            list只能利用查詢緩存(但在交易系統中查詢緩存作用不大),無法利用二級緩存中的單個實體,但是list查出的對象會寫入二級緩存,但它一般只生成較少的sql語句,很多情況就是一條。

            iterator則利用二級緩存,對于一條查詢語句,它會先從數據庫中找到所有符合條件的記錄的ID,在通過ID去緩存找,對于緩存中沒有的記錄,在構造語句從數據庫查出,第一次的執行會產生N+1條SQL語句。

            產生結果:

            用list可能會溢出

            通過Iterator,配合緩存管理API,在海量數據查詢中可以很好的解決內存問題。

            綜合考慮

            一般List會填充二級緩存,卻不能利用二級緩存,而Iterator可以讀二級緩存,然而無法命中的話,效率很低效。一般處理方法,就是第一次查詢使用list,隨后使用iterator查詢。

            總結

             

            Hibernate優化總結還有主配置、方法選用、事物控制沒有涉及到,因為它們相對來說這些方面比較簡單,但是還是很重要的。

            在實施一個項目的時候我們沒有必要想這些問題,做項目的時候第一步運行起來,第二步優化一下。在很多小型項目中第二步一般都不會去做,所以說我們做工程的時候還是要牢記運行出來,假如自己作為研究或者這個問題比較嚴重的話我們才考慮優化。

            Hibernate調優方面沒有最有只有更優,讓我們不斷積極找到優化的方法,來優化我們的程序,來優化我們自己。

            關于Hibernate優化方面,希望大家留下寶貴的意見,多對交流!

            posted on 2012-07-12 13:15 tbwshc 閱讀(843) 評論(0)  編輯 收藏 引用
            久久本道伊人久久| 性欧美大战久久久久久久久| 亚洲国产精品无码久久一区二区| 欧美久久综合九色综合| 国内精品久久久久久久97牛牛| 久久99精品久久久久久| 青青草原1769久久免费播放| 一本色道久久HEZYO无码| 久久精品9988| 亚洲国产精品成人久久蜜臀 | 日韩久久久久中文字幕人妻| 亚洲国产精品久久久天堂| 久久这里只有精品久久| 四虎久久影院| 办公室久久精品| 2020久久精品国产免费| 亚洲中文字幕无码久久2020| 一本大道久久a久久精品综合| 97久久超碰国产精品旧版| 久久本道久久综合伊人| 精品久久久噜噜噜久久久 | 日韩精品久久久久久| 久久精品无码一区二区WWW| 国产精品99久久久久久宅男| 亚洲精品乱码久久久久久自慰| 日本加勒比久久精品| 久久精品中文字幕久久| 久久99精品国产自在现线小黄鸭| 久久这里的只有是精品23| 伊人久久五月天| 国产精品久久波多野结衣| 热re99久久精品国99热| 久久久久人妻精品一区二区三区| 青草国产精品久久久久久| 99久久国产亚洲综合精品| 蜜桃麻豆WWW久久囤产精品| 久久久WWW成人免费毛片| 中文精品99久久国产 | 久久国产香蕉一区精品| 天天久久狠狠色综合| 色综合久久久久网|