Hibernate抓取策略

2021-09-02 05:23:27 字數 1560 閱讀 8888

抓取策略指的是我們在獲取資料時,告訴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 ...