Hibernate--- list和iterator方法的区别
来源:互联网 发布:淘宝买家秀木耳图链接 编辑:程序博客网 时间:2024/06/04 20:03
1)用HQL语句,使用Query对象来获取list()方法
@Testpublic void list1() {// 1.获得会话对象Session session = HibernateUtil.currentSession();// 2.查询的时候事务可以写可以不写String hql = "from Emp";// 3.获得Query对象Query query = session.createQuery(hql);// 4.获得list对象List<Emp> list = query.list();// 5.遍历数据for (Emp emp : list) {System.out.println(emp.getEmpno() + "\t" + emp.getEname() + "\t"+ emp.getJob() + "\t" + emp.getSal() + "\t"+ emp.getHiredate());}// 6.将会话关闭session.close();}
List的执行sql语句为:
select emp0_.EMPNO as EMPNO1_1_, emp0_.DEPTNO as DEPTNO2_1_, emp0_.ENAME as ENAME3_1_, emp0_.JOB as JOB4_1_, emp0_.MGR as MGR5_1_, emp0_.HIREDATE as HIREDATE6_1_, emp0_.SAL as SAL7_1_, emp0_.COMM as COMM8_1_ from WY.EMP emp0_
(2)通过Query得到Query的对象,并用iterator迭代器输出
@Testpublic void list2() {// 1.获得会话对象Session session = HibernateUtil.currentSession();// 2.查询的时候事务可以写可以不写String hql = "from Emp";// 3.获得Query对象Query query = session.createQuery(hql);// 4.获得Iterator对象Iterator<Emp> list = query.iterate();// 5.遍历数据while (list.hasNext()) {Emp emp = list.next();System.out.println(emp.getEmpno() + "\t" + emp.getEname() + "\t"+ emp.getJob() + "\t" + emp.getSal() + "\t"+ emp.getHiredate() + "\t" + emp.getDept().getDeptno());}// 6.将会话关闭session.close();}Iterator的执行sql语句为:
Hibernate:
select
emp0_.EMPNO as col_0_0_
from
WY.EMP emp0_
Hibernate:
select
emp0_.EMPNO as EMPNO1_1_0_,
emp0_.DEPTNO as DEPTNO2_1_0_,
emp0_.ENAME as ENAME3_1_0_,
emp0_.JOB as JOB4_1_0_,
emp0_.MGR as MGR5_1_0_,
emp0_.HIREDATE as HIREDATE6_1_0_,
emp0_.SAL as SAL7_1_0_,
emp0_.COMM as COMM8_1_0_
from
WY.EMP emp0_
where
emp0_.EMPNO=?
结论:
(1) 从上面的执行结果可以看出获取的方式不一样
List的获取方式为: List<Emp> list = query.list();
Iterator的获取方式: Iterator<Emp>list = query.iterate();
(2)从执行结果可以看出list输出一条语句,而iterator输出的是两条sql语句,为什么会输出这样的效果?
因为他们获取数据的方式不一样,list()会直接查询数据库,iterator()会先到数据库中把id都取出来,然后真正要遍历某个对象的时候先到缓 存中找,如果找不到,以id为条件再发一条sql到数据库,这样如果缓存中没有数据,则查询数据库的次数为n+1次
(3)list只查询一级缓存,而iterator会从二级缓存中查
(4)list方法返回的对象都是实体对象,而iterator返回的是代理对象
- hibernate -- list和iterator方法的区别
- Hibernate--- list和iterator方法的区别
- hibernate -- list和iterator方法的区别
- Hibernate Query查询的list方法和iterator方法区别
- Hibernate面试题 --- list和iterator方法的区别
- hibernate中 list和iterator方法的区别
- Hibernate面试题 --- list和iterator方法的区别
- hibernate list()和Iterator方法
- list和iterator方法的区别
- hibernate-Query的list方法与iterator方法的区别
- Hibernate之Query查询的list()方法和iterator()方法的区别
- Hibernate之Query查询的list()方法和iterator()方法的区别
- hibernate Query中的list和iterator方法区别
- Hibernate的load()、get()、list()、iterator()方法的区别
- Hibernate的load()、get()、list()、iterator()方法的区别
- Hibernate中的query.list()与query.iterator()方法的区别
- Hibernate 中Query的list方法和iterator方法
- hibernate取数据时iterator和list的区别
- CSDN博客积分规则和获取积分方法
- 解析sql语句中left_join、inner_join中的on与where的区别
- 详解PHP spl_autoload_register()函数
- Spring Task
- Android Studio运行项目报错:java.lang.UnsatisfiedLinkError——.so文件问题
- Hibernate--- list和iterator方法的区别
- TCPIP三次握手与四次挥手
- Python-----生成器:generator
- Manthan, Codefest 16 -C. Spy Syndrome 2
- 一、 Ubuntu12.04的安装和配置
- MBProgressHUD的基本使用
- 持续集成(CI)、自动化构建和自动化测试--初探
- 谈谈Android中的Divider
- leetcode-- Valid Sudoku