日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate之检索策略

發(fā)布時間:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate之检索策略 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.概述

檢索數(shù)據(jù)時的2個問題:

  • 不浪費(fèi)內(nèi)存:當(dāng)Hibernate從數(shù)據(jù)庫中加載Customer對象時,如果同時加載所有關(guān)聯(lián)的Order對象,而程序僅僅需要訪問Customer對象,那么關(guān)聯(lián)的Order對象就白白浪費(fèi)了許多內(nèi)存

  • 更高的查詢效率:發(fā)送盡可能少的SQL語句

2.類級別的檢索策略

  • 包括立即檢索和延遲檢索,默認(rèn)為延遲檢索

    • 立即檢索:立即加載檢索方法指定的對象

    • 延遲檢索:延遲加載檢索方法指定的對象

  • 類級別的檢索策略可以通過<class>元素的lazy屬性進(jìn)行設(shè)置

    • 如果程序加載一個對象的目的是為了訪問它的屬性,可以采取立即檢索

    • 如果僅僅是為了獲得它的引用,可以采用延遲索引

  • 無論<class>元素的lazy屬性是true還是false,Session的get()方法和Query的list()方法在類級別總是使用立即檢索策略

<class name="Order" table="ORDERS" lazy="true">具體內(nèi)容省略...</class>

3.一對一和多對多的檢索策略

  • 在映射文件中,用<set>元素來配置一對多關(guān)聯(lián)及多對多管理關(guān)系。<set>元素有l(wèi)azy和fetch屬性

    • lazy:主要決定orders集合被初始化的實(shí)際

    • fetch:取值為“select”或“subselect”時,決定初始化orders的查詢語句的形式;若取值為“join”,則決定orders集合被初始化的時機(jī)

    • 若把fetch設(shè)置為“join”,lazy屬性將被忽略

    • <set>元素的batch-size屬性:用來為延遲檢索策略或理解檢索策略設(shè)定批量檢索的數(shù)量

lazy屬性(默認(rèn):true)fetch(默認(rèn):select)檢索策略
trueselect延遲檢索
falseselect立即檢索
extraselect加強(qiáng)延遲檢索
true,false或extraselectselect查詢:select * from orders where customer_id in(1,2,3,4)
true,false或extrasubselect子查詢:select * from orders where customer_id in(select id from customers)
truejoin采用迫切左外連接策略

(1)延遲檢索

  • Hibernate在以下情況下初始化集合代理類實(shí)例

    • 應(yīng)用程序第一次訪問集合屬性,iterator(),size(),isEmpty(),contains()等方法

    • 通過Hibernate.initialize()靜態(tài)方法顯式初始化

(2)增強(qiáng)延遲檢索

  • 進(jìn)一步延遲Customer對象的Orders集合代理實(shí)例的初始化時機(jī)

    • 當(dāng)程序第一次訪問orders屬性的iterator()方法,會導(dǎo)致orders集合代理類實(shí)例的初始化

    • 當(dāng)程序第一次訪問order屬性的size(),contains()和isEmpty()方法時,Hibernate不會初始化orders集合類的實(shí)例,僅通過特定的select語句查詢必要的信息。比如:select count(*) from order where 條件

(3)<set>元素的batch-size屬性

<set> 元素有一個 batch-size 屬性, 用來為延遲檢索策略或立即檢索策略設(shè)定批量檢索的數(shù)量. 批量檢索能減少 SELECT 語句的數(shù)目, 提高延遲檢索或立即檢索的運(yùn)行性能

若batch-size設(shè)置為3,有5條數(shù)據(jù) select * from order where customer_id in(1,2,3) select * from order where customer_id in(4,5)

(4)迫切左外連接

  • 檢索Customer對象時,會采用迫切左外連接(通過左外連接加載與檢索指定的對象關(guān)聯(lián)的對象)策略來檢索所有關(guān)聯(lián)的Order對象

  • lazy屬性將被忽略

  • Query的list()方法會忽略映射文件中配合的迫切左外連接策略,依舊采用延遲加載策略

@Testpublic void testSetFetch2(){Customer customer = (Customer) session.get(Customer.class, 1);System.out.println(customer.getOrders().size()); } ? ?@Testpublic void testSetFetch(){//1. 若取值為 join. 則//1.1 在加載 1 的一端的對象時, 使用迫切左外連接(使用左外鏈接進(jìn)行查詢, 且把集合屬性進(jìn)行初始化)的方式檢索 n 的一端的集合屬性//1.2 忽略 lazy 屬性.//1.3 HQL 查詢忽略 fetch=join 的取值List<Customer> customers = session.createQuery("FROM Customer").list();System.out.println(customers.size()); for(Customer customer: customers){if(customer.getOrders() != null)System.out.println(customer.getOrders().size());}}

4.多對一的檢索策略

  • <many-to-one>元素也有一個lazy屬性和fetch屬性

    • 若fetch屬性為join,那么lazy屬性將被忽略

    • 無代理延遲檢索需要增強(qiáng)持久化類的字節(jié)碼才能實(shí)現(xiàn)

lazy屬性(默認(rèn):proxy)fetch屬性(默認(rèn):select)檢索策略
proxyselect延遲檢索
no-proxyselect無代理延遲檢索
falseselect立即檢索
proxyjoin迫切左外連接
<hibernate-mapping package="com.yfy.hibernate.strategy"> ?<class name="Order" table="ORDERS"> ?<id name="orderId" type="java.lang.Integer"><column name="ORDER_ID" /><generator class="native" /></id><property name="orderName" type="java.lang.String"><column name="ORDER_NAME" /></property><many-to-one name="customer" class="Customer" column="CUSTOMER_ID"lazy="false"fetch="join"></many-to-one> ?</class> </hibernate-mapping> public class Customer { ?private Integer customerId;private String customerName;private Set<Order> orders = new HashSet<>(); }

?

?

總結(jié)

以上是生活随笔為你收集整理的Hibernate之检索策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 林天顾悦瑶笔趣阁 | 黄色大片网站在线观看 | 男男车车的车车网站w98免费 | 日本涩涩视频 | 亚洲色图 美腿丝袜 | 最好看的mv中文字幕国语电影 | 美女扒开腿让男人 | 成人蜜桃视频 | 男女污污软件 | 少妇性bbb搡bbb爽爽爽欧美 | 国产成人精品一区二区三区免费 | 操你妹影院 | 久久久久久久av | 久久久在线免费观看 | 理论片91 | 中出一区二区 | 日韩成人高清视频 | 中文字幕第2页 | 亚洲无吗在线观看 | 夜夜草视频 | 毛片随便看 | 波多野结衣一区二区三区中文字幕 | 羞羞的视频在线观看 | 男女性高潮免费网站 | 欧美啪视频 | 久久久久国产精品国产 | 亚洲无限观看 | 蜜桃在线一区二区 | 亚洲成人h| 牲欲强的熟妇农村老妇女视频 | 日韩视频在线一区 | 天天爱综合 | 91 色| 国内毛片视频 | 污免费视频 | 凹凸av在线 | 欧美色图俺去了 | 亚洲av无码不卡 | 就操成人网 | 国产麻豆91视频 | 欧美怡红院视频 | 精品国产精品国产偷麻豆 | 7777久久亚洲中文字幕 | 波多一区二区 | 天堂婷婷| 风间由美一区 | 人人爱操 | 久久一级片 | 毛片在线网 | 国产伦精品一区二区三区网站 | 欧美色插| 艳妇乳肉豪妇荡乳av | 无码精品视频一区二区三区 | 欧美大片高清免费观看 | 亚洲精品福利视频 | 少妇xxxx | 狠狠爱成人 | 色视频在线看 | 国产精品偷伦视频免费观看了 | 麻豆做爰免费观看 | 极品熟妇大蝴蝶20p 国产偷自拍视频 | 重口变态虐黄网站 | 国产精品传媒在线观看 | 成人免费网站在线 | xxx视频在线观看 | 国产精品视频大全 | 国产xxxx做受视频 | av观看免费在线 | 国产伦精品一区二区三区视频网站 | 久久另类ts人妖一区二区 | 国产专区欧美专区 | 欧美在线不卡 | 男女69视频 | 黄页免费视频 | 久草视频首页 | 亚洲国产精品久久久久爰色欲 | 性欧美69 | 亚洲一级色 | 91在线网址 | 中文字幕网站在线观看 | 国产黄大片在线观看画质优化 | 理论片琪琪午夜电影 | 美女又爽又黄免费 | av基地网 | 国产精品第四页 | 国产一区二区三区免费在线观看 | 花房姑娘免费观看全集 | 中文字幕成人在线视频 | 色哟哟导航 | 国产极品美女在线 | xxxx性视频 | 国产剧情av在线 | 国产高清免费在线播放 | 97狠狠干| 龚玥菲一级淫片 | 一本大道av伊人久久综合 | 91在线网站 | 亚洲精品网站在线观看 | 精品探花 |