最近做的项目需要用到Hibernate和Struts,以前曾经读过孙MM的《精通Hibernate》一书,受益匪浅,但是对于其中的检索策略了解的不是很深入,今天刚做了实验,验证了一些想法,若有不妥之处,望大家指教。
映射文件中的
outer-join=true
,
lazy=true
时,
get
和
load
方法执行时将采用外连接检索
;
outer-join=false
,
lazy=true
时,
get
和
load
方法执行时首先用
select
语句查看本对象,以后遍历到该对象的
Set
型成员变量时,进行对该
Set
型成员变量的
select
操作;
outer-join=false,lazy=false
时,
get
和
load
方法执行时首先用
select
语句查看本对象,然后进行对该
Set
型成员变量的
select
操作;
outer-join=true
,
lazy=false
时,同
outer-join=true
,
lazy=true
。
映射文件中的
outer-join
属性对于
createQuery
形成的
HQL
查询没有影响。对于
HQL
语言
”from
类名
”
来说,
lazy=true
时,首先用
select
语句查看本对象,以后遍历到该对象的
Set
型成员变量时,进行对该
Set
型成员变量的
select
操作;
lazy=false
时,首先用
select
语句查看本对象,然后进行对该
Set
型成员变量的
select
操作。
对于
batch-size
用于减少非连接操作时的
select
语句的数目,例如当
outer-join=false
时,对于
lazy=true,
采用延迟批量检索
(
将第一个
select
语句找到的记录,在第二次执行多个
select
时,根据上一个
select
查询结果提供的条件,来减少
select
语句的个数
)
posted on 2006-05-15 18:23
chillwarmoon 阅读(122)
评论(0) 编辑 收藏