hibernate检索的使用
2016-07-25 13:07
127 查看
1.hibernate中检索主要有以下:
lazy=true|false|extra
fetch=select subselect join迫切的左外链接
batch-size 检索的数量
cascade="all" 级联操作
2.第一种lazy的使用:
2.1 Classes.hbm.xml
<set name="stus" lazy="false" >
<key column="class_id"></key>
<one-to-many class="Student"/>
</set>
</class>
</hibernate-mapping>
2.2 使用lazy="false"时效果如下;
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
<set name="stus" fetch="join" >
<key column="class_id"></key>
<one-to-many class="Student"/>
</set>
3.2 fetch="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.2 fetch="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]]
lazy=true|false|extra
fetch=select subselect join迫切的左外链接
batch-size 检索的数量
cascade="all" 级联操作
2.第一种lazy的使用:
2.1 Classes.hbm.xml
<set name="stus" lazy="false" >
<key column="class_id"></key>
<one-to-many class="Student"/>
</set>
</class>
</hibernate-mapping>
2.2 使用lazy="false"时效果如下;
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
<set name="stus" fetch="join" >
<key column="class_id"></key>
<one-to-many class="Student"/>
</set>
3.2 fetch="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.2 fetch="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]]
相关文章推荐
- oracle drop table(表)数据恢复方法
- Android基础总结(6)——内容提供器
- 求凸包(两遍扫描,求上下凸包的方法)
- 关于数组的一个例子
- js中替换字符串
- JetBrains 的产品集成 GIT 的设置方法
- C语言的关键字用法
- PhpExcel中文帮助手册|PhpExcel使用方法
- Mysql源码安装
- 两个队列实现一个栈
- 音视频传输基本知识及总体思路
- SAE J1587简介
- Log4j的配置
- 以太网OAM三兄弟-EFM、CFM和Y.1731
- C#中的Dictionary简介
- 如何获得升迁
- 《计算机图形学》2.1.6 三维观察设备 学习笔记
- JS生成中文二维码
- Move can only be called on an active agent that has been placed a Navmesh的解决办法
- PCB走线宽度和电流关系