hibernate 抓取策略

2021-09-01 23:35:21 字數 779 閱讀 4563

1.單端**(對端是one,即many2one):

1.1 在用many2one時,fetch可以採取select或者join.

* 用select時,會另發一條語句載入關聯物件。

* 用join時,用一條語句就查上來,相當於資料庫裡面的連線,內連線外連線取決於外來鍵是否允許為空。

注意:這個規則僅適用於get或者load時,對hql沒有任何作用,即依然是會另發一條語句。

2.集合**(對端是集合,即one2many)

2.1 這裡fetch有3種取值:select,join,subselect

* select,join和單端**的一樣,只影響load和get,對hql無用。

* 而subselect對get和load無效,對hql有效。即用subselect,get和load還是另發一條語句,而hql卻是一下子查出來(比如select * from students where classid in (select * from classes))

3.批量抓取(主要是用在many2one,或者one2many中的多的一方,加上乙個batch-size=5)

* 用在多的一端,假設many2one當中,50個學生對應50個不同班級,那麼查詢50個學生後,就得再查50次,才能將50個班級查出來,而如果在學生上加上batch-size=10,那麼只要查50/10=5次就可以將班級全部查出來,用的是sql中的in原理。

join和join fetch的區別:

join對load,get有效,對hql無效。

join fetch一般對hql有效。

Hibernate抓取策略

抓取策略指的是我們在獲取資料時,告訴hibernate以何種sql的方式去獲取,hibernate有三種抓取方式可供選擇,分別是select join subselect 該屬性只能在集合標籤和關聯關係標籤上使用。xml version 1.0 encoding utf 8 cn.hibernate...

hibernate 抓取策略

抓取策略 fetching strategy 抓取策略 fetching strategy 是指 當應用程式需要在 hibernate實體物件圖的 關聯關係間進行導航的時候,hibernate如何獲取關聯物件的策略。抓取策略可以在o r對映的元資料中宣告,也可以在特定的hql 或條件查詢 crite...

Hibernate 抓取策略Fetch

lazy與fetch 如果fetch為 join lazy不論設定成什麼樣的值,都不起作用 如果fetch為 select 先載入classes,再載入student,而lazy決定在什麼時候載入studentpublic class fetchtest extends hibernateutil ...