国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Hibernate的fetch (轉(zhuǎn))

2019-11-15 00:25:50
字體:
供稿:網(wǎng)友
Hibernate的fetch (轉(zhuǎn))

fetch ,可以設(shè)置fetch = "select" 和 fetch = "join"用一對多來舉例:fetch ="select"是在查詢的時候先查詢出一端的實體,然后在根據(jù)一端的查詢出多端的實體,會產(chǎn)生1+n條sql語句;fetch = "join"是在查詢的時候使用外連接進(jìn)行查詢,不會差生1+n的現(xiàn)象。lazy大家應(yīng)該都熟悉了,就是延遲加載,可以設(shè)置lazy = "true" , lazy = "false" lazy ="Hibernate的fetch="join"和fetch="select"的一點分析

fetch參數(shù)指定了關(guān)聯(lián)對象抓取的方式是select查詢還是join查詢,select方式時先查詢返回要查詢的主體對象(列表),再根據(jù)關(guān)聯(lián)外鍵id,每一個對象發(fā)一個select查詢,獲取關(guān)聯(lián)的對象,形成n+1次查詢;而join方式,主體對象和關(guān)聯(lián)對象用一句外鍵關(guān)聯(lián)的sql同時查詢出來,不會形成多次查詢。如果你的關(guān)聯(lián)對象是延遲加載的,它當(dāng)然不會去查詢關(guān)聯(lián)對象。另外,在hql查詢中配置文件中設(shè)置的join方式是不起作用的(而在所有其他查詢方式如get、criteria或再關(guān)聯(lián)獲取等等都是有效的),會使用select方式,除非你在hql中指定joinfetch某個關(guān)聯(lián)對象。

fetch策略用于定義 get/load一個對象時,如何獲取非lazy的對象/集合。 這些參數(shù)在Query中無效。

fetch策略用于定義 get/load一個對象時,如何獲取非lazy的對象/集合。 這些參數(shù)在Query中無效。

查詢抓取(默認(rèn)的)在N+1查詢的情況下是不好的,因此我們可能會要求在映射文檔中定義使用連接抓取:

<set name="permissions"fetch="join"><key column="userId"/><one-to-manyclass="Permission"/></set<many-to-one name="mother" class="Cat"fetch="join"/>在映射文檔中定義的抓取策略將會有產(chǎn)生以下影響:

通過get()或load()方法取得數(shù)據(jù)。

只有在關(guān)聯(lián)之間進(jìn)行導(dǎo)航時,才會隱式的取得數(shù)據(jù)(延遲抓取)。

條件查詢

在映射文檔中顯式的聲明 連接抓取做為抓取策略并不會影響到隨后的HQL查詢。

通常情況下,我們并不使用映射文檔進(jìn)行抓取策略的定制。更多的是,保持其默認(rèn)值,然后在特定的事務(wù)中,使用HQL的左連接抓取(left join fetch) 對其進(jìn)行重載。這將通知Hibernate在第一次查詢中使用外部關(guān)聯(lián)(outer join),直接得到其關(guān)聯(lián)數(shù)據(jù)。 在條件查詢 API中,應(yīng)該調(diào)用setFetchMode(FetchMode.JOIN)語句。

其實這并不能說明hql能夠按照配置文件設(shè)置的join進(jìn)行抓取,這時第二級:topic-->forum的抓取其實已經(jīng)和hql沒有關(guān)系了,因為前面已經(jīng)產(chǎn)生了另一個select方式的抓取語句。而是對象的關(guān)聯(lián)獲取,假如查詢message時topic是設(shè)置為延遲加載的,那么在后面獲取message.topic時,如topic.forum不延遲加載,那么topic-->forum會實現(xiàn)配置的join方式的抓取,這個顯然和hql查詢沒有關(guān)系。

原文地址:http://qinhanbin.VEvb.com/blog/520038

     http://sun-gufeng-126-com.VEvb.com/blog/629261


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 巴彦淖尔市| 巴塘县| 长治县| 桐梓县| 鄱阳县| 冕宁县| 沁水县| 烟台市| 昌乐县| 东乌珠穆沁旗| 定安县| 张家川| 黔东| 礼泉县| 姚安县| 亳州市| 平罗县| 莲花县| 台安县| 天等县| 广南县| 泰兴市| 临沧市| 日照市| 莆田市| 海阳市| 巴马| 航空| 濮阳市| 五大连池市| 特克斯县| 承德市| 石阡县| 宝丰县| 京山县| 永修县| 建始县| 宾川县| 澳门| 东平县| 周宁县|