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 ...