iterate()方法
Return the query results as an Iterator. If the query contains multiple results pre row, the results are returned in aninstance of Object[]. Entities returned as results are initialized ondemand. The first SQL query returns identifiers only.
(返回的实体只有在使用时才会被初始化,执行该方法查询时只会返回实体的标识符(即id))
list()方法
Return the query results as a List. If the query contains multiple results pre row, the results are returned in aninstance of Object[].
区别:
对于Query接口的list()方法与iterate()方法来说,都可以实现获取查询的对象,但是list()方法返回的每个对象都是完整的(对象中的每个属性都被表中的字段填充上了),而iterator()方法所返回的对象中仅包含了主键值(标识符),只有当你对iterator中的对象进行操作时,Hibernate才会向数据库再次发送SQL语句来获取该对象的属性值
list: 结果存入缓存,但不从缓存里面取;查询时属性连同id一起找出来,只有一句select;
iterate:结果存入缓存,并在缓存中查找结果;查询时先找出所有的 id,然后根据 id 到缓存里面查找,如果没有命中,再到数据库中查找该id对应的其他属性。可能会有多行 select。
相关推荐
今天我们将探讨的是Hibernate的二级缓存,特别是`list`和`iterate`方法的区别,这对于优化数据库访问性能至关重要。 一级缓存是Hibernate内置的,它是Session级别的缓存,自动管理实体对象的生命周期。然而,一级...
- **Query.list()** 和 **Query.iterate()** 的主要区别在于返回类型和查询策略: - **Query.list()** 直接查询数据库,并将结果存储在内存中,适合数据量较小的情况。 - **Query.iterate()** 则会先获取ID列表,...
### HIBERNATE_QUERY知识点详解 ...List<Cat> blueCats = query.list(); ``` 以上就是关于Hibernate查询机制的相关知识点介绍,通过这些方法和技术,开发者可以根据具体的应用需求选择最合适的查询方式。
List<Customer> customers = query.list(); ``` ##### 4. QBC方式(Query By Criteria) - **定义**:QBC是Hibernate提供的另一种查询方式,基于标准的Java API,提供了更多的灵活性。 - **应用场景**:构建复杂...
List<Info> infos = query.list(); ``` 这段代码将获取第5页的记录,每页10条。 在给出的代码片段中,`getInfosCount()`方法用于获取所有`Info`记录的数量,这对于分页来说是必需的,因为我们需要知道总共有...
6.3. 读取(Fetching)选项和参数 6.3.1. 操作 Getopt 异常 6.3.2. 通过名字读取 (Fetching)选项 6.3.3. 报告选项 6.3.4. 读取非选项参数 6.4. 配置 Zend_Console_Getopt 6.4.1. 添加选项规则 6.4.2. 添加...
2. **数据加载**:`query.list()`默认会加载所有数据到内存,而`query.iterate()`则只会加载主键,后续需要时才会按需加载具体数据。`lazy="false"`表示实体加载时不启用懒加载,即立即加载所有关联数据。 3. **...
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(); } ``` ...
Iterator<Customer> customers = session.createQuery("from Customer c where c.age > 0").iterate(); while (customers.hasNext()) { Customer customer = customers.next(); session.delete(customer); } ...
提供的源码`s2sh_relation23_list_iterate`可能包含了演示如何使用Hibernate进行查询和遍历结果的实例。通过阅读和运行这些代码,你可以深入理解`list()`和`iterator()`在实际项目中的应用。 总之,理解和掌握`...
List<Role> list = query.list(); session.close(); return list; } } ``` 3. **Struts配置** - 在`struts-config.xml`中定义Action映射和结果页面。 - 使用Struts标签库进行页面逻辑控制和数据展示。 ...
在Hibernate中,一个对象可以处于三种不同的状态:自由态(Transient)、持久态(Persistent)和游离态(Detached)。 1. **自由态 (Transient)**:当一个对象与Session没有关联时,它处于自由态。例如,新创建的...
2. **sleep()和wait()的区别**:sleep()是Thread类的一个静态方法,用于暂停当前线程的执行一段时间,不释放锁;wait()是Object类的方法,它使当前线程等待,直到被其他线程唤醒或超时,会释放持有的锁。 3. **线程...
`单端代理的批量抓取.PNG` 可能讲解了如何通过Hibernate的批处理技术提高性能,如设置批处理大小,利用Session的flush模式,以及Query的iterate()和list()方法的区别。批量操作可以减少数据库交互次数,提升应用性能...
Query 1.查询对象,HQL Criteria 1.hibernate提供的更面向对象的一种查询方式。 准备工作: 1.java中的POJO对象存在 2.数据库,表得存在 3.hibernate的配置文件(hibernate.cfg.xml)得存在 4.POJO.hbm.xml文件存在...
- 执行`save()`、`update()`、`saveOrUpdate()`等操作时,如果使用`load()`、`get()`、`list()`、`iterate()`等方法,则可能会触发缓存的刷新。 - 在调用`flush()`方法时,会将Session内的状态同步到数据库,并且...
一.使用Hibernate的Session对象操作数据库 1.初始化Hibernate:在要使用Hibernate的类的方法中实例化... (7).createQuery(String HQL).list()/iterate()/uniqueResult(); //HQL(Hibernate Query Language)语句查询
关于iterate和list的使用,由于无法确保查询条件的重复性,通常很难保证iterate能充分利用缓存。而且,iterate可能会导致1+N问题,因为即使有缓存,每次迭代时仍需检查数据库是否存在新数据。相比之下,list在某些...
Query 对象提供了许多方法来查询持久化对象,例如 list、iterate 等。Query 对象可以根据不同的条件来查询持久化对象。 Hibernate 的核心接口分别是 Configuration、SessionFactory、Session、Transaction 和 Query...