Hibernate的延迟加载(3)——集合的延迟加载
来源:互联网 发布:it狂人电影版 编辑:程序博客网 时间:2024/04/29 14:08
集合的延迟加载是在一对多和多对多中应用
- lazy为true时
@Testpublic void TestQuery(){Session session = HibernateUtils.getSession();try {//这里没有发出sql语句Team team = (Team) session.load(Team.class, 1);//因为这里只用到非集合属性,所以只是发出了搜索非集合属性的sql语句System.out.println(team.gettName());//这里没有发出sql语句Set<Emp> sets = team.getSet();//这里用到集合属性,发出搜索集合的sql语句System.out.println(sets);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
- lazy为false
@Testpublic void TestQuery3(){Session session = HibernateUtils.getSession();try {//这里没有发出sql语句Team team = (Team) session.load(Team.class, 1);//因为这lazy为false,这就会发处所有的select语句System.out.println(team.gettName());//这里没有发出sql语句Set<Emp> sets = team.getSet();//这里不在发送sql语句System.out.println(sets);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
- lazy为extra
@Testpublic void TestQuery3(){Session session = HibernateUtils.getSession();try {//这里没有发出sql语句Team team = (Team) session.load(Team.class, 1);//因为这里只用到非集合属性,所以只是发出了搜索非集合属性的sql语句System.out.println(team.gettName());//这里没有发出sql语句Set<Emp> sets = team.getSet();//发出一条正能高效的sqlSystem.out.println(sets.size());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}
输出:
Hibernate:
select
team0_.ID as ID1_1_0_,
team0_.TNAME as TNAME2_1_0_,
team0_.LOC as LOC3_1_0_
from
TEAM team0_
where
team0_.ID=?
meng
Hibernate:
select
count(IMPNO)
from
EMP
where
ID =?
2
如上当lazy为extra时获取集合的数量就不会把所有的集合搜索出来再计算数量,这样效率会比较高
Note:
集合的延迟加载不受类的集合加载影响
如下类的lazy设置为:
<classname="com.yao.hibernate.model.Team" table="TEAM"lazy="false">
集合设置为:
<setname="set" table="EMP" cascade="save-update"inverse="true" lazy="extra">
0 0
- Hibernate的延迟加载(3)——集合的延迟加载
- hibernate的延迟加载
- Hibernate的延迟加载
- hibernate 的延迟加载
- hibernate的延迟加载
- hibernate的延迟加载
- Hibernate 的延迟加载
- Hibernate的延迟加载
- Hibernate的延迟加载
- Hibernate 的延迟加载
- Hibernate的延迟加载
- Hibernate的延迟加载
- Hibernate 集合属性的延迟加载
- Hibernate集合属性的延迟加载
- Hibernate的延迟加载(2)——类的延迟加载
- hibernate—延迟加载
- Hibernate的延迟加载(1)——什么是延迟加载
- Hibernate延时加载---集合属性的延迟加载
- C中读入一整行字符串并转换成int
- Python机器学习库SKLearn:数据集转换之管道和特征
- ETCD应用场景
- servlet2.x采用的是单实例多线程方式
- oracle之存储过程1-介绍
- Hibernate的延迟加载(3)——集合的延迟加载
- css关于div中文字对其左右两端
- 课后习题 2.6
- 如何安装Spark & TensorflowOnSpark
- ANSI字符串和Unicode字符串
- fedora18安装virtualbox
- Spring知识一(bean配置)
- 如何修复uefi引导?这种方法才是最有效的解决方法
- LeetCode算法题目:3Sum