1.hibernate中檢索主要有以下:
lazy=true|false|extra
fetch=select subselect join迫切的左外鏈結
batch-size 檢索的數量
cascade="all" 級聯操作
2.第一種lazy的使用:
2.1 classes.hbm.xml
hibernate:
select
student0_.id as id1_1_0_,
student0_.name as name2_1_0_,
student0_.class_id as class_id3_1_0_
from
student student0_
where
student0_.id=?
hibernate:
select
classes0_.id as id1_0_0_,
classes0_.name as name2_0_0_
from
classes classes0_
where
classes0_.id=?
hibernate:
select
stus0_.class_id as class_id3_0_1_,
stus0_.id as id1_1_1_,
stus0_.id as id1_1_0_,
stus0_.name as name2_1_0_,
stus0_.class_id as class_id3_1_0_
from
student stus0_
where
stus0_.class_id=?
student [id=1, name=tom, cls=classes [id=1, name=大資料0302]]
2.2 使用lazy="true"時,效果如下;
hibernate:
select
student0_.id as id1_1_0_,
student0_.name as name2_1_0_,
student0_.class_id as class_id3_1_0_
from
student student0_
where
student0_.id=?
hibernate:
select
classes0_.id as id1_0_0_,
classes0_.name as name2_0_0_
from
classes classes0_
where
classes0_.id=?
student [id=1, name=tom, cls=classes [id=1, name=大資料0302]]
2.3 使用lazy="extra"時,效果如下;
hibernate:
select
student0_.id as id1_1_0_,
student0_.name as name2_1_0_,
student0_.class_id as class_id3_1_0_
from
student student0_
where
student0_.id=?
hibernate:
select
classes0_.id as id1_0_0_,
classes0_.name as name2_0_0_
from
classes classes0_
where
classes0_.id=?
student [id=1, name=tom, cls=classes [id=1, name=大資料0302]]
3 第二種 fetch的使用
3.1 classes.hbm.xml
3.2fetch="join"時:
hibernate:
select
student0_.id as id1_1_0_,
student0_.name as name2_1_0_,
student0_.class_id as class_id3_1_0_
from
student student0_
where
student0_.id=?
hibernate:
select
classes0_.id as id1_0_1_,
classes0_.name as name2_0_1_,
stus1_.class_id as class_id3_0_3_,
stus1_.id as id1_1_3_,
stus1_.id as id1_1_0_,
stus1_.name as name2_1_0_,
stus1_.class_id as class_id3_1_0_
from
classes classes0_
left outer join
student stus1_
on classes0_.id=stus1_.class_id
where
classes0_.id=?
student [id=1, name=tom, cls=classes [id=1, name=大資料0302]]
3.2fetch="select"時:
ibernate:
select
student0_.id as id1_1_0_,
student0_.name as name2_1_0_,
student0_.class_id as class_id3_1_0_
from
student student0_
where
student0_.id=?
hibernate:
select
classes0_.id as id1_0_0_,
classes0_.name as name2_0_0_
from
classes classes0_
where
classes0_.id=?
student [id=1, name=tom, cls=classes [id=1, name=大資料0302]]
hibernate的檢索策略
立即檢索 延遲檢索 迫切左外連線檢索 以下 為類級別和關聯級別可選的檢索策略及預設的檢索策略 檢索策略的作用域 可選的檢索策略 預設的檢索策略 執行時行為受影響的 session 的檢索方法 類級別立即載入 延遲載入 立即檢索 load 方法關聯級別 立即載入 延遲載入 迫切左外連線檢索 多對一或者...
Hibernate的檢索策略
hibernate 的中的session依照load 和get 按照引數的制定oid objctid 去載入乙個持久化物件。另外query.list 方法則按照hql語句去載入持久化的物件。以上的幾個方式都可以實現hibernate的持久化物件的載入。如果有不懂hibernate物件的 臨時狀態 游...
Hibernate 檢索策略
在預設情況下,當hibernate從資料庫中載入物件時,會同時載入所有關聯的物件.但實際應用中可能不需要使用其關聯的物件,這樣就可能通過設定hibernate的檢索策略,來優化檢索效能.hiberante提供了3種檢索策略 1 立即檢索 2 延遲檢索 3 迫切左外連線檢索 下面先從概念上去理解,先在...