hibernate list()和Iterator方法
来源:互联网 发布:网吧游戏菜单软件 编辑:程序博客网 时间:2024/05/18 01:00
对于list方法而言,实际上Hibernate是通过一条Select SQL获取所有的记录。并将其读出,填入到POJO中返回。
而iterate 方法,则是首先通过一条Select SQL 获取所有符合查询条件的记录的id,再对这个id 集合进行循环操作,通过单独的Select SQL 取出每个id 所对应的记录,之后填入POJO中返回。
也就是说,对于list 操作,需要一条SQL 完成。而对于iterate 操作,需要n+1条SQL。
看上去iterate方法似乎有些多余,但在不同的情况下确依然有其独特的功效,如对海量数据的查询,如果用list方法将结果集一次取出,内存的开销可能无法承受。
另一方面,对于我们现在的Cache机制而言,list方法将不会从Cache中读取数据,它总是一次性从数据库中直接读出所有符合条件的记录。而iterate 方法因为每次根据id获取数据,这样的实现机制也就为从Cache读取数据提供了可能,hibernate首先会根据这个id 在本地Cache 内寻找对应的数据,如果没找到,再去数据库中检索。
Query的两个方法,list() 和 iterate() , 两个方法都是把结果集列出来, 他们有3点不一样,
1:返回的类型不一样,list()返回List, iterate()返回Iterator,
2: 获取数据的方式不一样,list()会直接查数据库, iterate()会先到数据库中把id都取出来,然后真正要遍历某个对象的时候先到缓存中找,如果找不到,以id为条件再发一条sql到数据库,这样如果缓存中没有数据,则查询数据库的次数为n+1。
3:iterate会查询2级缓存, list只会查询一级缓存。
4: list()中返回的List中每个对象都是原本的对象, iterate()中返回的对象是代理对象.(debug可以发现)
http://blog.sina.com.cn/s/blog_6e68b8b30100mtxt.html
- hibernate list()和Iterator方法
- hibernate -- list和iterator方法的区别
- Hibernate--- list和iterator方法的区别
- hibernate -- list和iterator方法的区别
- Hibernate 中Query的list方法和iterator方法
- Hibernate Query查询的list方法和iterator方法区别
- Hibernate面试题 --- list和iterator方法的区别
- hibernate中 list和iterator方法的区别
- hibernate Query中的list和iterator方法区别
- Hibernate面试题 --- list和iterator方法的区别
- Hibernate之list和iterator
- Hibernate之Query查询的list()方法和iterator()方法的区别
- Hibernate之Query查询的list()方法和iterator()方法的区别
- hibernate-Query的list方法与iterator方法的区别
- list和iterator方法的区别
- hibernate查询方法选择(List()与Iterator())
- Hibernate的load()、get()、list()、iterator()方法的区别
- Hibernate中的query.list()与query.iterator()方法的区别
- 来帝都一周有感
- 采用nettcp绑定的wcf宿主到iis7
- android-【DDMS->heap->MAT】工具-内存分析工具(2)
- 使用nohup让程序永远后台运行
- 虚函数
- hibernate list()和Iterator方法
- eclipse安装adt不能从官网抓取数据的解决办法
- WCF中配置文件解析
- 手机iphone项-测试崩溃问题总结
- oracle 的 as 与 is
- cpp-netlib 如何编译
- WCF开发框架之证书加密使用说明书
- userenv和sys_context函数
- 《unix systems for modern architectures》笔记---SMP和锁(一)