注意: 是Query.iterate(),而不是Query.iterator();
程序代码
Session session=HibernateSessionFactory.getSession();
List li=null;
Iterator it=null;
Date d=new Date();
System.out.print(d.toString());
Query q=session.createQuery("from TgovMaterialBak");
li=q.list();
li=q.list();
我们看输出:
Hibernate: select tgovmateri0_.SQLID as SQLID3_, tgovmateri0_.Id as Id3_, tgovmateri0_.CID as CID3_, tgovmateri0_.Addr as Addr3_, tgovmateri0_.Code as Code3_, tgovmateri0_.Code03 as Code6_3_, tgovmateri0_.Cname as Cname3_, tgovmateri0_.Name as Name3_, tgovmateri0_.Spec as Spec3_, tgovmateri0_.Unit as Unit3_, tgovmateri0_.PriceH as PriceH3_, tgovmateri0_.PriceM as PriceM3_, tgovmateri0_.PriceL as PriceL3_, tgovmateri0_.FID as FID3_, tgovmateri0_.FName as FName3_, tgovmateri0_.Brand as Brand3_, tgovmateri0_.Notes as Notes3_, tgovmateri0_.IssueDate as IssueDate3_, tgovmateri0_.EndDate as EndDate3_, tgovmateri0_.CreateON as CreateON3_, tgovmateri0_.CreateBy as CreateBy3_, tgovmateri0_.UpdateOn as UpdateOn3_, tgovmateri0_.UpdateBy as UpdateBy3_, tgovmateri0_.NodeIndex as NodeIndex3_, tgovmateri0_.DataID as DataID3_ from [Material-08].dbo.tGovMaterialBak tgovmateri0_
Hibernate: select tgovmateri0_.SQLID as SQLID3_, tgovmateri0_.Id as Id3_, tgovmateri0_.CID as CID3_, tgovmateri0_.Addr as Addr3_, tgovmateri0_.Code as Code3_, tgovmateri0_.Code03 as Code6_3_, tgovmateri0_.Cname as Cname3_, tgovmateri0_.Name as Name3_, tgovmateri0_.Spec as Spec3_, tgovmateri0_.Unit as Unit3_, tgovmateri0_.PriceH as PriceH3_, tgovmateri0_.PriceM as PriceM3_, tgovmateri0_.PriceL as PriceL3_, tgovmateri0_.FID as FID3_, tgovmateri0_.FName as FName3_, tgovmateri0_.Brand as Brand3_, tgovmateri0_.Notes as Notes3_, tgovmateri0_.IssueDate as IssueDate3_, tgovmateri0_.EndDate as EndDate3_, tgovmateri0_.CreateON as CreateON3_, tgovmateri0_.CreateBy as CreateBy3_, tgovmateri0_.UpdateOn as UpdateOn3_, tgovmateri0_.UpdateBy as UpdateBy3_, tgovmateri0_.NodeIndex as NodeIndex3_, tgovmateri0_.DataID as DataID3_ from [Material-08].dbo.tGovMaterialBak tgovmateri0_
系统等于执行了两次select * from tGovMaterialBak
我们再看看:
程序代码
Session session=HibernateSessionFactory.getSession();
List li=null;
Iterator it=null;
Date d=new Date();
System.out.print(d.toString());
Query q=session.createQuery("from TgovMaterialBak");
it=q.iterate();
it=q.iterate();
Hibernate: select tgovmateri0_.SQLID as col_0_0_ from [Material-08].dbo.tGovMaterialBak tgovmateri0_
Hibernate: select tgovmateri0_.SQLID as col_0_0_ from [Material-08].dbo.tGovMaterialBak tgovmateri0_
从输出语句我们可以知道,系统只是执行了两次select id from TgovMaterialBak ,这就是为什么在海量数据时用list()会导致超出内存,而iterate()可以快速返回的原因了,这里也折射了一个SQL优化原则,在不用select *的地方就尽量不要用select *!
分享到:
相关推荐
jsp脚本和<logic:iterate>标签:实现循环和分支逻辑 jsp脚本和<logic:iterate>标签:实现循环和分支逻辑 jsp脚本和<logic:iterate>标签:实现循环和分支逻辑
我就是靠这个文档实现logic:iterate的循环的 struts 标签 logic:iterate使用 logic:iterate <br>第一页 是struts官方的说明, 第二页 是个例子 第三页 是我实现的arrayList放入标签的方法。 这是页面...
python库。 资源全名:plone.app.iterate-1.0a1.2.tar.gz
Map里存放的是List时 <br><logic:iterate id="destMap" name="srcMap"> <br> <logic:iterate id="bean" name="destMap" property="value" /> <br> <bean:write name="bean" property="name" /> <br> ...
资源来自pypi官网。 资源全名:plone.app.iterate-1.0a1.2-py2.4.egg
资源分类:Python库 所属语言:Python 资源全名:plone.app.iterate-1.0b1.1-py2.4.egg 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
Query 1.查询对象,HQL Criteria 1.hibernate提供的更面向对象的一种查询方式。 准备工作: 1.java中的POJO对象存在 2.数据库,表得存在 3.hibernate的配置文件(hibernate.cfg.xml)得存在 4.POJO.hbm.xml文件存在...
NULL 博文链接:https://364232252.iteye.com/blog/2369137
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
logic:iterate 产生问题的图
Iterate主要用来处理在页面上输出集合类,集合一般来说是下列之一: 1、 java对象的数组 2、 ArrayList、Vector、HashMap等
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 Hibernate映射类型接口 2.4.4 可供扩展的接口 2.5 小结 2.6 思考题 第3章 第一个Hibernate应用 3.1 创建Hibernate的配置文件 3.2 创建持久化类...
当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级...
一.使用Hibernate的Session对象操作数据库 1.初始化Hibernate:在要使用Hibernate的类的方法中实例化... (7).createQuery(String HQL).list()/iterate()/uniqueResult(); //HQL(Hibernate Query Language)语句查询
21 // Iterate the result set, printing each column 22 // if the column was an int, we could do rs.getInt(column name here) as well, etc. 23 while (rs.next()) { 24 String id = rs.getString("country_id...
Form.IO服务库 该库使您可以从Node.js应用程序中与Form.IO API进行接口。 下面是一个示例,说明如何使用该库来检索特定表单中的所有提交。... // Iterate through all the submissions. form.eachSubmission(fun
// iterate through constants // format: constant, coinSymbol, coinName // ie. [ 0x80000002, "LTC", "Litecoin" ] // Some rows have no coin and are just indices and constants constants . forEach ( row =...