==========Hibernate中,既然可以直接返回query.iterator(),为什么很多给例子用query.list().iterator(),两者有何区别=========== query.iterator()取出的记录会保存到缓存中 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼上的理解错了,楼主问的不是Query.list()与Query.Iterate()的区别。好象Query.list().Iterate返回的是实体对象。 list方法在查询时,是一次查询出所有的记录,并实例化,这样有一个缺点,就是数据量很大时内存销好就有点夸张了,Iterate这个一次只查询出一部份记录,分多次查询,也就是说SQL语句会被执行多次,hibernate官方好像也推荐使用这个方法样,因为这个虽然被执行了多次,但是好像性能方便影响不是太大. Iterate 是先查出所有主键,然后再一条条查记录, 也就是N+1查询.好处是可以利用缓存 楼上正解看看,用Iterate 生成的SQL语句就不难理解 query.list()是先从二级缓存中查找,query.iterate()是先从一级缓存中查找所以在优化的过程中这两个是很重要的 我刚刚用例子测试了一下,发现情况如下:同样查询UserTquery.list().iterate():类似这样的SQL文select * from UserT;query.iterator()类似这样的SQL文select no from UserT;也即:第一种方案是查询所有列的行记录;第二种方案是将所有记录的no逐渐查询出来。大家看我分析的对不?有点同意aChinese(一个中国人)的看法。大家还有别的意见么,不妨一起讨论一下。 StringBuffer类型强转Integer类型报错,求助 java 与数据库的链接,实在是链接不上了 在点一个超连接显示数据库不同表的数据在同一个页面 哪里能下载J2EE,我要学习用? Weblogic8.1使用struts后,处理每个静态页面请求的内存开销竟然涨到了6M以上,前辈请指教如何调优。 奇怪,apache的POI不支持操作word? 排列组合问题求算法 linux下的java视频?那里有? 关于weblogic中连接池的问题 Weblogic 中开发的EJB找不到第三方jar包的困惑! Java开发者:J2EE网站开发经验共享! 学习搜索引擎技术有什么好的网站和书,语言不限
好象Query.list().Iterate返回的是实体对象。
Iterate这个一次只查询出一部份记录,分多次查询,也就是说SQL语句会被执行多次,hibernate官方好像也推荐使用这个方法样,因为这个虽然被执行了多次,但是好像性能方便影响不是太大.
好处是可以利用缓存
query.iterate()是先从一级缓存中查找
所以在优化的过程中这两个是很重要的
类似这样的SQL文
select * from UserT;
query.iterator()
类似这样的SQL文
select no from UserT;也即:
第一种方案是查询所有列的行记录;
第二种方案是将所有记录的no逐渐查询出来。大家看我分析的对不?
有点同意aChinese(一个中国人)的看法。
大家还有别的意见么,不妨一起讨论一下。