Hibernate中如何實現(xiàn)多表查詢?針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都做網(wǎng)站、華寧網(wǎng)絡(luò)推廣、小程序開發(fā)、華寧網(wǎng)絡(luò)營銷、華寧企業(yè)策劃、華寧品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)建站為所有大學生創(chuàng)業(yè)者提供華寧建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com
1.Hibernate中的多表查詢
1.1SQL中的多表查詢
【交叉連接】
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中的多表連接查詢
【交叉連接】
交叉連接
【內(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延遲加載: 查詢的時候不發(fā)送sql語句,在使用對象的時候才發(fā)送sql語句查詢
延遲加載氛圍類級別的延遲加載和關(guān)聯(lián)級別的延遲加載
2.1.1類級別的延遲加載
使用延遲加載的方法查詢某個類的時候是否采用的延遲稱為是類級別的延遲。默認值是true。
Customer customer = session.load(Customer.class,1l);// 默認就會采用延遲加載,這種稱為是類級別的延遲。
類級別延遲加載失效:
* final修飾這個類,不能產(chǎn)生代理類,延遲加載就會失效。
* 在
2.1.2關(guān)聯(lián)級別的延遲加載
查詢到某個對象以后,獲得其關(guān)聯(lián)的對象。查詢其關(guān)聯(lián)對象的時候是否采用的延遲。稱為是關(guān)聯(lián)級別的延遲。
Customer c = session.get(Customer.class,1l); c.getLinkMans(); // 查詢關(guān)聯(lián)對象的時候,是否采用延遲加載。
關(guān)聯(lián)級別的延遲往往會與抓取策略一起使用,優(yōu)化程序。(關(guān)聯(lián)級別的延遲在
2.2抓取策略
抓取策略指的是查找到某個對象后,抓取其關(guān)聯(lián)的對象的時候采用的策略。抓取策略就是在關(guān)聯(lián)對象的配置上(
2.2.1 在set上配置的lazy和fetch
fetch:抓取策略,控制SQL語句的發(fā)送的格式。
* select :默認值。發(fā)送一條select語句查詢關(guān)聯(lián)對象。
* join :發(fā)送一條迫切左外連接查詢關(guān)聯(lián)對象。
* subselect :發(fā)送一條子查詢查詢關(guān)聯(lián)對象。
lazy:延遲加載,控制SQL語句的發(fā)送的時候。
* true :默認值。采用延遲加載。
* false :不采用延遲加載。
* extra :及其懶惰。
2.2.2 在many-to-one上配置的lazy和fetch
fetch:抓取策略,控制SQL語句的發(fā)送的格式。
* select :默認值.發(fā)送一條select語句查詢關(guān)聯(lián)對象。
* join :發(fā)送一條迫切左外連接查詢關(guān)聯(lián)對象。
lazy:延遲加載,控制SQL的發(fā)送的時機。
* proxy :默認值。是否采用延遲,需要由另一方類上的延遲加載來決定。
* false :不采用延遲加載。
* no-proxy:
2.2.3 批量抓取
批量抓?。翰樵兞硕鄠€客戶的時候,查詢多個客戶下的所有聯(lián)系人。
在Customer.hbm.xml中
關(guān)于Hibernate中如何實現(xiàn)多表查詢問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。