`
spring028
  • 浏览: 44702 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hibernate : Query.list()、Query.iterate()的区别

阅读更多

注意: 是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 *!

分享到:
评论

相关推荐

    hibernate批量删除.txt

    ### Hibernate 批量删除知识点详解 #### 一、概述 在进行数据库操作时,经常会遇到需要批量处理数据的情况,例如批量更新或批量删除等。利用Hibernate框架可以方便地实现这些功能,提高开发效率并减少资源消耗。...

    HIBERNATE_QUERY

    ### HIBERNATE_QUERY知识点详解 #### 一、概述 Hibernate作为一款强大的对象关系映射(ORM)框架,为Java开发者提供了一套高效且简洁的方式来处理数据库操作。它支持多种查询方式,包括面向对象的查询语言(HQL)...

    day37 04-Hibernate二级缓存:list和iterate方法比较

    今天我们将探讨的是Hibernate的二级缓存,特别是`list`和`iterate`方法的区别,这对于优化数据库访问性能至关重要。 一级缓存是Hibernate内置的,它是Session级别的缓存,自动管理实体对象的生命周期。然而,一级...

    HQL实用技术

    - **Query.list()** 和 **Query.iterate()** 的主要区别在于返回类型和查询策略: - **Query.list()** 直接查询数据库,并将结果存储在内存中,适合数据量较小的情况。 - **Query.iterate()** 则会先获取ID列表,...

    hibernate语句大全

    List<Customer> customers = query.list(); ``` ##### 4. QBC方式(Query By Criteria) - **定义**:QBC是Hibernate提供的另一种查询方式,基于标准的Java API,提供了更多的灵活性。 - **应用场景**:构建复杂...

    jdbc基础和参考

    Query 1.查询对象,HQL Criteria 1.hibernate提供的更面向对象的一种查询方式。 准备工作: 1.java中的POJO对象存在 2.数据库,表得存在 3.hibernate的配置文件(hibernate.cfg.xml)得存在 4.POJO.hbm.xml文件存在...

    使用Hibernate缓存数据.ppt

    - **操作行为**:当调用Session的`get()`、`load()`、`save()`、`update()`、`saveOrUpdate()`、`Query`或`Criteria`的`list()`、`iterate()`等方法时,Hibernate会自动处理一级缓存。 - **查询示例**:在同一个...

    struts+hibernate查询所有记录

    List<Role> list = query.list(); session.close(); return list; } } ``` 3. **Struts配置** - 在`struts-config.xml`中定义Action映射和结果页面。 - 使用Struts标签库进行页面逻辑控制和数据展示。 ...

    hibernate操作数据库笔记

    一.使用Hibernate的Session对象操作数据库 1.初始化Hibernate:在要使用Hibernate的类的方法中实例化... (7).createQuery(String HQL).list()/iterate()/uniqueResult(); //HQL(Hibernate Query Language)语句查询

    hibernate 二级缓存详解

    如果启用查询缓存,还需添加`hibernate.cache.use_query_cache=true`。 二级缓存将数据视为一个Map,Key通常是实体的ID,Value是对应的实体对象。对于实体的读取,无论是通过list、load还是iterate,只要读取到一个...

    整理的Hibernate

    2. **数据加载**:`query.list()`默认会加载所有数据到内存,而`query.iterate()`则只会加载主键,后续需要时才会按需加载具体数据。`lazy="false"`表示实体加载时不启用懒加载,即立即加载所有关联数据。 3. **...

    Hibernate教程24_Hibernate的补充_list与iterator

    提供的源码`s2sh_relation23_list_iterate`可能包含了演示如何使用Hibernate进行查询和遍历结果的实例。通过阅读和运行这些代码,你可以深入理解`list()`和`iterator()`在实际项目中的应用。 总之,理解和掌握`...

    Hibernate方法总结

    这两个方法都用于执行HQL(Hibernate Query Language)查询。`find`返回一个List集合,一次性将所有结果加载到内存,适合于小规模数据的查询。而`iterate`返回一个迭代器,每次调用`next()`方法时才从数据库中获取一...

    getHibernateTemplate()有模糊查询和 分页

    在Hibernate中,我们通常使用HQL(Hibernate Query Language)或SQL来进行查询。对于模糊查询,即包含通配符的查询,可以使用`Query`对象的`like()`方法。例如,如果你有一个`Info`实体类,包含一个`title`字段,你...

    hibernate学习笔记

    `单端代理的批量抓取.PNG` 可能讲解了如何通过Hibernate的批处理技术提高性能,如设置批处理大小,利用Session的flush模式,以及Query的iterate()和list()方法的区别。批量操作可以减少数据库交互次数,提升应用性能...

    hibernate对二级缓存的理解

    同时,若要启用查询缓存,还需设置`hibernate.cache.use_query_cache=true`。 二级缓存的工作原理可以简单地理解为一个Map,其中Key代表对象的ID,Value则是对应的POJO对象。无论是通过list、load还是iterate操作,...

    Hibernate二级缓存攻略

    同时,如果要开启查询缓存,还需设置`hibernate.cache.use_query_cache=true`。 在二级缓存中,数据以Map的形式存储,Key通常为对象的ID,Value为对象实例。对于Class级别的缓存,当我们通过ID获取对象时,会首先...

    HIbernate缓存

    <property name="hibernate.cache.use_query_cache">true ``` 这里我们使用EhCache作为缓存实现。需要注意的是,在不同的Hibernate版本中,EhCache的包名可能有所不同。例如,在2.1版本中使用`...

    hibernate教程

    2. **查询**: Hibernate提供HQL(Hibernate Query Language)和Criteria API进行查询,HQL类似于SQL,Criteria API更加面向对象。 3. **检索**: `Session`的`get()`、`load()`方法获取单个实体,`list()`, `scroll()...

Global site tag (gtag.js) - Google Analytics