抓取策略指的是我們在獲取資料時,告訴hibernate以何種sql的方式去獲取,hibernate有三種抓取方式可供選擇,分別是select 、 join、 subselect 該屬性只能在集合標籤和關聯關係標籤上使用。
<
?xml version=
"1.0" encoding=
"utf-8"
?>
<
>
="cn.hibernate.pojo"
>
<
class
name
="book"
>
"select" lazy=
"proxy"
>
<
/many-to-one>
<
/class
>
<
當查詢關聯物件通過一條一條的select語句去查詢,select語句發出時機,是根據lazy的值來決定的,如果lazy=「false」 ,那麼在獲取某一端物件時,就會發出一條select語句,將關聯物件一起查詢出來。如果lazy!=「false」 ,那麼只有在獲取關聯物件時才會發出select語句。
<
?xml version=
"1.0" encoding=
"utf-8"
?>
<
>
="cn.hibernate.pojo"
>
<
class
name
="book"
>
"join" lazy=
"proxy"
>
<
/many-to-one>
<
/class
>
<
語句發出時機的機制同select抓取一致,只是查詢的方式不同而已,當查詢關聯物件時,通過outer join把關聯物件一起查詢出來,這個時候lazy無效。所有資料都會立即查詢出來
<
?xml version=
"1.0" encoding=
"utf-8"
?>
<
>
="cn.hibernate.pojo"
>
<
class
name
="category"
>
"books" fetch=
"subselect" lazy=
"false"
>
<
/set>
<
/class
>
<
查詢方式和語句發出時機的機制同select抓取一致,並且該屬性只可以配置在一端,不可以在多端使用。當獲取集合中具體的某個物件時,會以子查詢的方式去獲取,效率較低,不推薦使用。 hibernate 抓取策略
1.單端 對端是one,即many2one 1.1 在用many2one時,fetch可以採取select或者join.用select時,會另發一條語句載入關聯物件。用join時,用一條語句就查上來,相當於資料庫裡面的連線,內連線外連線取決於外來鍵是否允許為空。注意 這個規則僅適用於get或者loa...
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 ...