博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
33hibernate_fetch_4_set_join
阅读量:6325 次
发布时间:2019-06-22

本文共 2082 字,大约阅读时间需要 6 分钟。

hibernate抓取策略(集合代理的批量抓取)
设置fetch=
"
join
",如:
<
set name=
"
students
" inverse=
"
true
" cascade=
"
all
" fetch=
"
join
">
fetch=
"
join
",hibernate会通过select语句使用外连接来加载其关联实体或集合
此时lazy会失效
============================================================================================
    
public 
void testFetch1() {
        Session session = 
null;
        
try {
            session = HibernateUtils.getSession();
            session.beginTransaction();
            Classes classes = (Classes)session.load(Classes.
class
1);
            System.
out.println(
"
classes.name=
" + classes.getName());
            
for (Iterator iter=classes.getStudents().iterator(); iter.hasNext();) {
                Student student = (Student)iter.next();
                System.
out.println(
"
student.name=
" + student.getName());
            }
            session.getTransaction().commit();
        }
catch(Exception e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        }
finally {
            HibernateUtils.closeSession(session);
        }
    }    
测试结果:
Hibernate: 
select classes0_.id 
as id0_1_, classes0_.name 
as name0_1_, students1_.classesid 
as classesid3_, students1_.id 
as id3_, students1_.id 
as id1_0_, students1_.name 
as name1_0_, students1_.classesid 
as classesid1_0_ 
from t_classes classes0_ left outer join t_student students1_ on classes0_.id=students1_.classesid 
where classes0_.id=?
classes.name=班级0
student.name=班级0的学生0
student.name=班级0的学生5
student.name=班级0的学生3
student.name=班级0的学生1
student.name=班级0的学生2
student.name=班级0的学生4
student.name=班级0的学生6
-------------------------
0 
5 
3 
1 
2 
4 
6----------------------------------------------------
因为是set,所以是无序的: 
Hibernate: 
select classes0_.id 
as id0_1_, classes0_.name 
as name0_1_, students1_.classesid 
as classesid3_, students1_.id 
as id3_, students1_.id 
as id1_0_, students1_.name 
as name1_0_, students1_.classesid 
as classesid1_0_ 
from t_classes classes0_ left outer join t_student students1_ on classes0_.id=students1_.classesid 
where classes0_.id=?
classes.name=班级0
student.name=班级0的学生3
student.name=班级0的学生6
student.name=班级0的学生1
student.name=班级0的学生2
student.name=班级0的学生5
student.name=班级0的学生0
student.name=班级0的学生4
------------------------- 
3  
6 
1 
2 
5 
0  
4-------------------------------------------------

转载地址:http://ldmaa.baihongyu.com/

你可能感兴趣的文章
Entity Framework公共的增删改方法
查看>>
hdu1698 Just a Hook 线段树:成段替换,总区间求和
查看>>
dorado spring知识补充
查看>>
Android -- ViewPager、Fragment、状态保存、通信
查看>>
如果想消除随机性的感觉
查看>>
.NET网站自动浏览器分享,解决IIS6应用池回收后第一次访问慢问题
查看>>
关于验证码识别3
查看>>
【JavaScript】javascript常用的东西
查看>>
Cucumber 入门一
查看>>
c++ 单例模式
查看>>
备忘:mybatis 3的使用记录
查看>>
JAVA反射机制
查看>>
Java几款性能分析工具的对比
查看>>
SVN使用教程总结
查看>>
Chrome各个版本小常识
查看>>
阿里云图片压缩上传代码
查看>>
java关于split分割字符串,空的字符串不能得到的问题
查看>>
JavaScript函数式编程
查看>>
C++_系列自学课程_第_6_课_bitset集_《C++ Primer 第四版》
查看>>
IDataParameter调用存储过程
查看>>