Hibernate系列之 1 抓取策略

2021-08-29 02:56:45 字數 1487 閱讀 6667

在 customer.hbm.xml 配置檔案中:

set集合上的屬性: fetch、 lazy

fetch 決定傳送的sql語句的型別

lazy 控制關聯物件的檢索是否採用延遲.,就即決定多的一方orders是否延遲載入(注意: class 上的 lazy 屬性決定一方customer是否支援延遲載入)

fetch:

lazy:

搭配結果:

fetch= select

fetch=join, lazy 取值被忽略

fetch=subselect在 order.hbm.xml 檔案中配置:

many-to-one 標籤中屬性: fetch、lazy

fetch:控制sql語句傳送格式

lazy:關聯物件檢索的時候,是否採用延遲

customer.hbm.xml

...

如果customer 中有 10 個訂單, batch-size 是 3,那麼 hibernate 將會分四次執行 select 查詢order, 按照 3、3、3、1

的大小分別載入資料。這裡的每次載入的資料量還具體依賴於當前 session 中未例項化集合的個數。

需求: 查詢每個訂單對應的 customer 的名稱集合

預設: 查詢所有訂單,傳送乙個sql; 然後對應每個訂單查詢customer,傳送乙個sql

select

customer0_.id as id1_1_0_,

customer0_.name as name2_1_0_

from

customer customer0_

where

customer0_.id=?

customer.hbm.xml的 class 標籤上新增屬性:batch-size=3

注意是customer.hbm.xml不是order.hbm.xml

select

customer0_.id as id1_1_0_,

customer0_.name as name2_1_0_

from

customer customer0_

where

customer0_.id in (

?, ?, ?

)

Hibernate批量抓取

siwuxie095 hibernate 批量抓取 以客戶和聯絡人為例 一對多 1 批量抓取 同時查詢多個物件的關聯物件,是 hibernate 抓取策略的一種 2 一般情況下,會傳送多條 sql 語句,效率低下 如 查詢所有客戶,返回 list 集合,遍歷該 list 集合,得到每 個客戶的所有聯...

hibernate 抓取策略

1.單端 對端是one,即many2one 1.1 在用many2one時,fetch可以採取select或者join.用select時,會另發一條語句載入關聯物件。用join時,用一條語句就查上來,相當於資料庫裡面的連線,內連線外連線取決於外來鍵是否允許為空。注意 這個規則僅適用於get或者loa...

Hibernate抓取策略

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