亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Hibernate性能優化的方法有哪些

發布時間:2021-12-04 16:30:57 來源:億速云 閱讀:97 作者:iii 欄目:編程語言

本篇內容主要講解“Hibernate性能優化的方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Hibernate性能優化的方法有哪些”吧!

1.盡量使用many-to-one,避免使用單項one-to-many

2.靈活使用單向one-to-many

3.不用一對一,使用多對一代替一對一

4.配置對象緩存,不使用集合緩存

5.一對多使用Bag 多對一使用Set

6.繼承使用顯示多態  HQL:from object  polymorphism="exlicit" 避免查處所有對象

7.消除大表,使用二級緩存對于上面這些,我們進行了詳細的講解。

one-to-many:使用inverse=false(default),對象的關聯關系是由parent對象來維護的,而inverse=true的情況下,一般用戶雙向多對多關聯,由子對象維護關聯關系,增加子對象的時候需要顯示:child.setParent(child)為了提高性能,應該盡量使用雙向one-to-many inverse=true,在MVC結構中的DAO接口中應該直接用Session持久化對象,避免通過關聯關系(這句話有點不理解),而在單項關系中正確使用二級緩存,則可以大幅提高以查詢為主的應用。

多對一性能問題比較少,但是要避免經典N+1問題。
通過主鍵進行關聯,相當于大表拆分小表。(這個是區分面向對象設計和面向過程設計的一個關鍵點)
list、bag、set的正確運用one-to-many:

◆使用list 需要維護Index Column字段,不能被用于雙向關聯,而且必須使用inverse=false,需要謹慎使用在某些稀有場合(基本上是不予考慮使用)

◆bag/set在one-to-many中語義基本相同,推薦使用bag many-to-one:

◆bag和set不同,bag允許重復插入,建議使用set在龐大的集合分頁中應該使用session.createFilter session.createFilter(parent.getChildren(),""),setFirstResult(0),setMaxResult(10))避免N+1 參考(http://www.javaeye.com/post/266972)
在多對一的情況下,查詢child對象,當在頁面上顯示每個子類的父類對象的時候會導致N+1次查詢,需要采用下面的方法避免:many-to-one fetch="join|select"(該方法可能有問題)

inverse=true 無法維護集合緩存(還不是很理解集合緩存和對象緩存)
OLTP類型的web應用,可以群集水平擴展,不可避免的出現數據庫瓶頸框架能降低訪問數據庫的壓力,采用緩存是衡量一個框架是否優秀的重要標準,從緩存方面看Hibernate

◆對象緩存,細顆粒度,是針對表的級別,透明化訪問,因為有不改變代碼的好處,所以是ORM提高性能的法寶

◆Hibernate是目前ORM框架中緩存性能***的框架

◆查詢緩存

***Robbin還針對大家經常出現的Hibernate vs iBatis的討論進行了一個總結:

對于OLTP應用,使用ORM框架 而OLEB應用(不確定是什么應用)***采用JDBC或者其他方法處理Hibernate傾向于細顆粒度設計,面向對象,將大表拆分為多個小表,消除冗余字段,通過二級緩存提升性能。

iBatis傾向于粗顆粒度設計,面向關系,盡量把表合并,通過Column冗余,消除關聯關系,但是iBatis沒有有效的緩存手段。

可以說我們的Hibernate性能優化總結對于使用Hibernate的開發人員有著很重要的點撥作用。

到此,相信大家對“Hibernate性能優化的方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莱州市| 新丰县| 宁陵县| 固原市| 万安县| 阳曲县| 白山市| 沽源县| 横峰县| 西贡区| 禹州市| 开封县| 昭苏县| 蒙城县| 松滋市| 永兴县| 荣昌县| 平凉市| 乳源| 静海县| 突泉县| 南京市| 衡阳市| 茂名市| 蓬莱市| 抚松县| 海宁市| 文成县| 西青区| 凤冈县| 马山县| 北票市| 兴海县| 东源县| 托克逊县| 西充县| 泰宁县| 纳雍县| 将乐县| 申扎县| 江阴市|