String hql = "from Student";
Query query = session.createQuery(hql);
对于这条语句的查询:
List<Student> stus = query.list();
会把所有的查询结果放到list中。一次加载到内存。
语句:select student0_.id as id3_, student0_.studentage as studentage3_, student0_.studentname as studentn3_3_ from Student student0_//当执行list方法的时候
Iterator<Student> stus = query.iterate();
该语句只把ID的值放到迭代器中,当遍历的时候,会根据ID的值再去数据库中查。并且该语句会产生N+1次查询。
语句1:select student0_.id as col_0_0_ from Student student0_ //当执行iterate方法的时候
语句2:select student0_.id as id3_0_, student0_.studentage as studentage3_0_, student0_.studentname as studentn3_3_0_ from Student student0_ where student0_.id=?//遍历获取值的时候
这两个方法各有千秋。请根据具体情况选择使用(牺牲内存或者牺牲网络资源)。
分享到:
相关推荐
今天我们将探讨的是Hibernate的二级缓存,特别是`list`和`iterate`方法的区别,这对于优化数据库访问性能至关重要。 一级缓存是Hibernate内置的,它是Session级别的缓存,自动管理实体对象的生命周期。然而,一级...
提供的源码`s2sh_relation23_list_iterate`可能包含了演示如何使用Hibernate进行查询和遍历结果的实例。通过阅读和运行这些代码,你可以深入理解`list()`和`iterator()`在实际项目中的应用。 总之,理解和掌握`...
以下是对标题和描述中提到的HibernateTemplate方法的详细总结: A. `get` 和 `load`: 这两个方法都是用于从数据库中获取单个对象。`get`方法直接返回一个实体对象,如果数据库中没有找到对应ID的数据,则返回null...
关于iterate和list的使用,由于无法确保查询条件的重复性,通常很难保证iterate能充分利用缓存。而且,iterate可能会导致1+N问题,因为即使有缓存,每次迭代时仍需检查数据库是否存在新数据。相比之下,list在某些...
本文将详细介绍如何利用Struts和Hibernate来实现对Oracle数据库中所有记录的查询及显示功能。 #### 二、技术背景介绍 1. **Struts**:Struts是一个开源的MVC(Model-View-Controller)框架,主要用于简化Web应用...
//该方法将到classpath下解析hibernate.cfg.xml中的配置,如果不用Hibernate默认的配置文件名和路径,可在该方法中指定Hibernate配置文件的名称和路径 2.用Configuration对象获取SessionFactory和Session对象:...
Query 对象提供了许多方法来查询持久化对象,例如 list、iterate 等。Query 对象可以根据不同的条件来查询持久化对象。 Hibernate 的核心接口分别是 Configuration、SessionFactory、Session、Transaction 和 Query...
### Hibernate语句大全 #### 一、概述 Hibernate是一个开源的对象关系映射(ORM)框架,它能够将Java对象映射到数据库表中,并管理这些对象的生命周期。本篇文章主要介绍初学者在学习Hibernate时会遇到的基础语句...
- `list()`、`uniqueResult()`、`iterate()`等方法处理查询结果。 3. **更新(Update)** - 修改对象的属性,然后调用`Session`的`update()`方法将对象的状态同步到数据库。 - 或者,先`load()`或`get()`对象,...
### HIBERNATE_QUERY知识点详解 #### 一、概述 Hibernate作为一款强大的对象关系映射...以上就是关于Hibernate查询机制的相关知识点介绍,通过这些方法和技术,开发者可以根据具体的应用需求选择最合适的查询方式。
17.1.10 按主键逐个处理查询结果(iterate()方法) 17.1.11 可滚动的结果集 17.1.12 在HQL查询语句中绑定参数 17.1.13 设置查询附属事项 17.1.14 在映射文件中定义命名查询语句 17.1.15 在HQL查询语句中...
`单端代理的批量抓取.PNG` 可能讲解了如何通过Hibernate的批处理技术提高性能,如设置批处理大小,利用Session的flush模式,以及Query的iterate()和list()方法的区别。批量操作可以减少数据库交互次数,提升应用性能...
总的来说,合理利用Hibernate的二级缓存可以极大地提升系统性能,但同时也需要注意缓存管理和一致性问题,避免出现数据不一致和内存资源浪费。在实际开发中,应根据具体的应用场景和数据特性来设计和优化缓存策略。
**Hibernate4 学习笔记** Hibernate4 是一个流行的开源对象关系映射(ORM)框架,它简化了Java...在实际开发中,合理配置和使用二级缓存、选择合适的查询方法以及理解load和get的区别,都能显著提升数据库操作的效率。
3. **检索**: `Session`的`get()`、`load()`方法获取单个实体,`list()`, `scroll()`, `iterate()`用于查询结果集。 4. **删除**: 使用`Session`的`delete()`方法删除实体。 5. **事务处理**: 在事务边界内执行...
List()和iterate查询的主要区别在于,List每次都会查询SQL并放入缓存,而iterate在缓存中不存在数据时可能出现N+1问题。 `get()`和`load()`方法都会利用一级缓存,当对象被加载到Session时,数据首先会被存入缓存而...