欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Hibernate中的多表查詢(xún)及抓取策略

 更新時(shí)間:2017年02月19日 17:02:45   作者:rodge  
本文主要介紹了Hibernate中的多表查詢(xún)及抓取策略,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧

1.Hibernate中的多表查詢(xún)

 1.1SQL中的多表查詢(xún)

【交叉連接】

select * from A,B;

【內(nèi)連接】

顯示內(nèi)連接:inner join(inner 可以省略)

Select * from A inner join B on 條件;

隱式內(nèi)連接:

Select * from A,B where 條件;

【外連接】

左外連接:left outer join

Select * from A left outer join B on 條件;

右外連接:right outer join

Select * from A right outer join B on 條件;

1.2Hibernate中的多表連接查詢(xún)

【交叉連接】

交叉連接

【內(nèi)連接】

顯示內(nèi)連接 from Customer c inner join c.linkmans

隱式內(nèi)連接

迫切內(nèi)連接from Customer c inner join fetch c.linkmans

【外連接】

左外連接

右外連接

迫切左外連接

2.Hibernate中的抓取策略

2.1 延遲加載lazy

lazy延遲加載: 查詢(xún)的時(shí)候不發(fā)送sql語(yǔ)句,在使用對(duì)象的時(shí)候才發(fā)送sql語(yǔ)句查詢(xún)

延遲加載氛圍類(lèi)級(jí)別的延遲加載和關(guān)聯(lián)級(jí)別的延遲加載

2.1.1類(lèi)級(jí)別的延遲加載

使用延遲加載的方法查詢(xún)某個(gè)類(lèi)的時(shí)候是否采用的延遲稱(chēng)為是類(lèi)級(jí)別的延遲。默認(rèn)值是true。

Customer customer = session.load(Customer.class,1l);// 默認(rèn)就會(huì)采用延遲加載,這種稱(chēng)為是類(lèi)級(jí)別的延遲。 

類(lèi)級(jí)別延遲加載失效:

* final修飾這個(gè)類(lèi),不能產(chǎn)生代理類(lèi),延遲加載就會(huì)失效。

* 在<class>上配置lazy=”false”

2.1.2關(guān)聯(lián)級(jí)別的延遲加載

查詢(xún)到某個(gè)對(duì)象以后,獲得其關(guān)聯(lián)的對(duì)象。查詢(xún)其關(guān)聯(lián)對(duì)象的時(shí)候是否采用的延遲。稱(chēng)為是關(guān)聯(lián)級(jí)別的延遲。

Customer c = session.get(Customer.class,1l);
c.getLinkMans(); // 查詢(xún)關(guān)聯(lián)對(duì)象的時(shí)候,是否采用延遲加載。

關(guān)聯(lián)級(jí)別的延遲往往會(huì)與抓取策略一起使用,優(yōu)化程序。(關(guān)聯(lián)級(jí)別的延遲在<set>或者是<many-to-one>標(biāo)簽上的延遲加載)

2.2抓取策略

抓取策略指的是查找到某個(gè)對(duì)象后,抓取其關(guān)聯(lián)的對(duì)象的時(shí)候采用的策略。抓取策略就是在關(guān)聯(lián)對(duì)象的配置上(<set>和<many-to-one>)配置fetch屬性。

2.2.1 在set上配置的lazy和fetch

fetch:抓取策略,控制SQL語(yǔ)句的發(fā)送的格式。

    * select    :默認(rèn)值。發(fā)送一條select語(yǔ)句查詢(xún)關(guān)聯(lián)對(duì)象。

    * join  :發(fā)送一條迫切左外連接查詢(xún)關(guān)聯(lián)對(duì)象。

    * subselect :發(fā)送一條子查詢(xún)查詢(xún)關(guān)聯(lián)對(duì)象。

lazy:延遲加載,控制SQL語(yǔ)句的發(fā)送的時(shí)候。

    * true  :默認(rèn)值。采用延遲加載。

    * false :不采用延遲加載。

    * extra :及其懶惰。

2.2.2 在many-to-one上配置的lazy和fetch

fetch:抓取策略,控制SQL語(yǔ)句的發(fā)送的格式。

    * select    :默認(rèn)值.發(fā)送一條select語(yǔ)句查詢(xún)關(guān)聯(lián)對(duì)象。

    * join  :發(fā)送一條迫切左外連接查詢(xún)關(guān)聯(lián)對(duì)象。

lazy:延遲加載,控制SQL的發(fā)送的時(shí)機(jī)。

    * proxy :默認(rèn)值。是否采用延遲,需要由另一方類(lèi)上的延遲加載來(lái)決定。

    * false :不采用延遲加載。

    * no-proxy:

2.2.3 批量抓取

  批量抓?。翰樵?xún)了多個(gè)客戶(hù)的時(shí)候,查詢(xún)多個(gè)客戶(hù)下的所有聯(lián)系人。

  在Customer.hbm.xml中<set>上配置batch-size=”n”

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評(píng)論