Hibernate 抓取策略Fetch
来源:互联网 发布:java网上报名系统源码 编辑:程序博客网 时间:2024/06/04 09:25
lazy与fetch 如果fetch为"join",lazy不论设置成什么样的值,都不起作用 如果fetch为"select",先加载classes,再加载student,而lazy决定在什么时候加载student
public class FetchTest extends HibernateUtil{ /** * 1.把classes表中所有的数据查询出来 * 2.再根据每一个CID,去student表中查询 * 抓取策略默认值是select,n+1sql语句 * <set name="students" inverse="true" fetch="select"> * */ @Test public void getAllClassesAndStudents(){ Session session=sessionFactory.openSession(); List<Classes> classes=session.createQuery("from com.sanmao.utils.Classes").list(); for (Classes c: classes) { Set<Student> students=c.getStudents(); for (Student s: students) { System.out.println(s); } } }/** * <set name="students" inverse="true" fetch="subselect"> * * select * from Student where cid in (select cid from Classes ) 调用了子查询 但是这种策略,在一定程度上也不能使用,在不包含子查询的需求内 例如 查询CID为1 的班级的所有学生,就不能用子查询了 */ @Test public void getAllClassesAndStudents_SubSelect(){ Session session=sessionFactory.openSession(); List<Classes> classes=session.createQuery("from com.sanmao.utils.Classes").list(); for (Classes c: classes) { Set<Student> students=c.getStudents(); for (Student s: students) { System.out.println(s); } } } /** * <set name="students" inverse="true" fetch="join"> * 在包含子查询的查询中,用join 无效,和默认select效果一样 * 在不包含子查询的查询中 ,join能实现优化 * 所有万能select(效率低),包含子查询用subselect,不包含用join * */ @Test public void getAllClassesAndStudents_Join(){ Session session=sessionFactory.openSession(); List<Classes> classes=session.createQuery("from com.sanmao.utils.Classes").list(); for (Classes c: classes) { Set<Student> students=c.getStudents(); for (Student s: students) { System.out.println(s); } } } /** * select c from Classes left outer join Student on classes0_.cid=students1_.cid where classes0_.cid=? * */ @Test public void getAllClassesAndStudents_Join2(){ Session session=sessionFactory.openSession(); Classes c=(Classes) session.get(Classes.class,1L); Set<Student> students=c.getStudents(); for (Student s: students) { System.out.println(s); } session.close(); }}
0 0
- Hibernate Fetch 抓取策略
- hibernate 抓取策略fetch
- hibernate抓取策略(fetch)
- Hibernate--fetch抓取策略
- Hibernate 抓取策略Fetch
- hibernate fetch抓取策略
- hibernate抓取策略fetch
- hibernate抓取策略fetch详解
- hibernate抓取策略fetch详解
- hibernate抓取策略fetch详解
- hibernate抓取策略fetch详解
- hibernate抓取策略fetch / batch-size
- hibernate的抓取策略(fetch和lazy)
- hibernate抓取策略fetch具体解释
- Hibernate —— 理解fetch抓取策略
- hibernate抓取策略fetch=select /join/subselect
- hibernate抓取策略fetch=select /join/subselect
- hibernate抓取策略fetch=select /join/subselect
- Minimum Scalar Product(GCJ 2008 Round1A A)数学问题+贪心
- Hadoop 1.X & Hadoop 2.X 默认端口对比
- Ubuntu16.04 安装 redis
- 微信小程序把玩(三)tabBar底部导航
- 软件测试之概要
- Hibernate 抓取策略Fetch
- 使用选择器在页面中插入内容
- 观察mysql进程状态
- JavaScript函数分类、定义方式和调用方式
- innodb 日志
- c++模板函数声明和定义分离
- WebCrawler Java小爬爬 从入门到放弃 第二章
- git 的基本使用(创建,分支,删除)
- C语言中memset函数详解