`

query.iterate()与query.list()的区别

 
阅读更多

Query query=this.GetSession().createQuery(hql);
query.iterate()与query.list()
效率是说query.iterate()比query.list()好,但做了N+1次查询
它们都是先从数据库的查询出主键值,然后根据主键值查询出对象,
只是query.iterate()会根据主键值先从缓存当中找,若没有就从数据库查询
query.list()会根据主键值在数据库查询(N+1)

分享到:
评论

相关推荐

    HQL实用技术

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

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

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

    HIBERNATE_QUERY

    ### HIBERNATE_QUERY知识点详解 ...List<Cat> blueCats = query.list(); ``` 以上就是关于Hibernate查询机制的相关知识点介绍,通过这些方法和技术,开发者可以根据具体的应用需求选择最合适的查询方式。

    hibernate语句大全

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

    getHibernateTemplate()有模糊查询和 分页

    List<Info> infos = query.list(); ``` 这段代码将获取第5页的记录,每页10条。 在给出的代码片段中,`getInfosCount()`方法用于获取所有`Info`记录的数量,这对于分页来说是必需的,因为我们需要知道总共有...

    整理的Hibernate

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

    ZendFramework中文文档

    9.6.2. List of All Constants 9.6.3. Self-Defined OUTPUT Formats with ISO 9.6.4. Self-defined OUTPUT formats using PHP's date() format specifiers 9.7. Working examples 9.7.1. Checking dates 9.7.2....

    hibernate批量删除.txt

    Iterator<Customer> customers = session.createQuery("from Customer c where c.age > 0").iterate(); while (customers.hasNext()) { Customer customer = customers.next(); session.delete(customer); } ...

    在Java的Hibernate框架中使用SQL语句的简单介绍

    Iterator iter = query.iterate(); while(iter.hasNext()){ Object[] objs = (Object[])iter.next(); for (int i = 0; i < objs.length; i++) { System.out.print(objs[i]); } System.out.println(); } ``` ...

    Hibernate缓存机制

    - 执行`save()`、`update()`、`saveOrUpdate()`等操作时,如果使用`load()`、`get()`、`list()`、`iterate()`等方法,则可能会触发缓存的刷新。 - 在调用`flush()`方法时,会将Session内的状态同步到数据库,并且...

    Hibernate教程24_Hibernate的补充_list与iterator

    【标题】"Hibernate教程24_Hibernate的补充_list与iterator" 在Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。本教程将重点讲解在使用Hibernate时,如何处理查询结果集合...

    中兴通java程序员面试题(高)

    13. **Hibernate查询**:Query.list()返回结果列表,适用于一次性加载大量数据;Query.iterate()返回迭代器,适用于大数据量分批加载,减少内存占用。 14. **RESTful架构**:一种轻量级的网络架构风格,相比传统的...

    hibernate查询

    - `Iterator iterator = q.iterate();`遍历结果集,每条记录为一个`Object[]`数组。 3. **投影查询**: - 示例代码: ```java List<Customer> results = session.createQuery("select new Customer(sex, ...

    struts+hibernate查询所有记录

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

    hibernate学习笔记

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

    jdbc基础和参考

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

    hibernate 二级缓存详解

    Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...

    Hibernate核心接口

    Query 对象提供了许多方法来查询持久化对象,例如 list、iterate 等。Query 对象可以根据不同的条件来查询持久化对象。 Hibernate 的核心接口分别是 Configuration、SessionFactory、Session、Transaction 和 Query...

    hibernate操作数据库笔记

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

Global site tag (gtag.js) - Google Analytics