hibernate檢索的使用

2021-07-15 13:13:40 字數 3231 閱讀 4879

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 迫切左外連線檢索 下面先從概念上去理解,先在...