Query上有list()与iterator()方法,两者的差别在于list()方法在读取数据时,并不会利用到快取,而是直接再向数据库查询,而iterator()则将读取到的数据写到快取,并于读取时再次利用。
来看看下面的程序:
Session session = sessionFactory.openSession();
Query query = session.createQuery("from User");
List users = query.list();
users = query.list();
session.close();
这个程序片段会使用两次SQL来查询数据库:
Hibernate: select user0_.id as id, user0_.name as name0_, user0_.age as age0_ from user user0_
Hibernate: select user0_.id as id, user0_.name as name0_, user0_.age as age0_ from user user0_
如果在Session关闭之前,要再将所有数据在取出,可以使用iterator()方法,例如:
Session session = sessionFactory.openSession();
Query query = session.createQuery("from User");
Iterator users = query.iterate();
users = query.iterate();
session.close();
这个程序片段会使用一次SQL向数据库查询,第二次则直接从快取中取得数据:
Hibernate: select user0_.id as col_0_0_ from user user0_
由于使用iterator()方法时会使用到Session level快取,所以在查询大量数据时,会耗用大量的内存,必要时可以使用Session的evict()或clear()方法来清除快取。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pcno1/archive/2009/01/07/3725586.aspx
分享到:
相关推荐
【标题】"Hibernate教程24_Hibernate的补充_list与iterator" 在Java开发中,Hibernate作为一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作。本教程将重点讲解在使用Hibernate时,如何处理查询结果集合...
### HIBERNATE_QUERY知识点详解 ...List<Cat> blueCats = query.list(); ``` 以上就是关于Hibernate查询机制的相关知识点介绍,通过这些方法和技术,开发者可以根据具体的应用需求选择最合适的查询方式。
List list = query.list(); iterator = list.iterator(); return iterator; } ``` #### 四、模糊查询 模糊查询通常用于根据部分匹配条件来查找记录。在Hibernate中,可以使用`like`语句来实现模糊查询。 **...
本文将深入探讨Hibernate中的几种主要的数据获取方式,包括`Session.get()`与`Session.load()`、`Query.iterator()`与`Query.list()`以及使用HQL(Hibernate Query Language)进行查询。 ### 1. `Session.get()`与`...
Hibernate 提供了多种方式来处理结果集,例如使用 `list()` 方法获取整个结果集,或者使用 `Iterator` 迭代器来逐个处理结果集。例如: ```java Query query = session.createQuery("from Student"); List<Student> ...
List<User> names = query.list(); Iterator<User> iterator = names.iterator(); while(iterator.hasNext()){ User user = iterator.next(); System.out.println(user.getId() + " " + user.getUsername() + " " ...
<s:iterator value="list" status="st"> <td><s:property value="username"/> <td><s:property value="password"/> <td><s:property value="power"/> <td><s:property value="cdate"/> <td><a href="input?user....
HQL(Hibernate Query Language)是一种面向对象的查询语言,它提供了灵活而强大的数据检索方式,使开发人员能够更高效地与数据库交互。本文将详细介绍HQL的基本用法及高级特性。 #### 1. 查询所有记录(Select) ...
List<Customer> customers = query.list(); ``` ##### 4. QBC方式(Query By Criteria) - **定义**:QBC是Hibernate提供的另一种查询方式,基于标准的Java API,提供了更多的灵活性。 - **应用场景**:构建复杂...
2. list()与iterator()方法: - list()方法:在执行时,list()一次性获取所有查询结果并将其转换为对象列表。这可能导致一次性加载大量数据,特别是在大型结果集时可能会消耗大量内存,甚至引发内存溢出。 - ...
在Java开发中,Hibernate是一个流行的持久化框架,它简化了数据库操作,将对象与关系数据库之间的映射管理自动化。本篇将深入讲解在Hibernate中常用的查询语句,包括HQL(Hibernate Query Language)和QBC(Query By...
### 六、基于对象的查询(Query Based on Objects) 当查询条件基于一个实体对象时,可以使用`Example.create()`方法。 **示例代码**: ```java User user = new User(); user.setAge(30); Criteria criteria = ...
使用`iterator()`方法遍历已加载的数据集,如`orderList.iterator()`,这在处理大量数据时特别有用,可以有效降低内存消耗。 - **基于OID查询** OID(Object Identity)查询,通过`session.get()`或`session.load...
final List<Order> result = query.getResultList(); final Iterator<Order> iterator = result.iterator(); while (iterator.hasNext()) { Order order = iterator.next(); // 处理Order对象 } ``` 在这个例子中...
5. **返回List集合**:Query.list() 返回List集合,Query.iterate() 返回Iterator。 - **Query.list()** 和 **Query.iterate()** 的主要区别在于返回类型和查询策略: - **Query.list()** 直接查询数据库,并将...
在软件开发领域,尤其是涉及到对象关系映射(ORM)框架如Hibernate时,HQL(Hibernate Query Language)是一种非常重要的查询工具。HQL是Hibernate提供的面向对象的查询语言,它允许开发者以类和属性的方式来查询...
Iterator iteator = list.iterator(); if (iteator.hasNext()) { person = (Person) iteator.next(); } return person; } ``` - **HQL 查询**:使用 HQL (Hibernate Query Language) 构造查询语句,其中 `?` ...
Hibernate查询详解涵盖了多个关键知识点,包括get()和load()方法的区别、list()和iterator()方法的差异、HQL(Hibernate Query Language)与SQL的对比、HQL查询的步骤及高级特性,以及实体的删除和更新操作。...