一级缓存,内部缓存,自带;二级缓存,用户自己配置。3.X后版本。
get()方法
在当前Session的一级缓存中查找数据,获取不到指定的对象时,查找二级缓存,二级缓存没有,到数据库查。没有数据返回null;
load()方法
在当前Session的一级缓存中查找数据,获取不到指定的对象时,去二级缓存中查找,获取不到,根据配置文件制定的加载策略,lazy为false时返回对象,为true时返回代理类,代理类值有对象id值,其他属性为空,只有当调用时才回去数据库查询返回对象。数据库没有数据时此方法会抛出异常。
list()方法
Return the query results as a List. If the query contains multiple results pre row, the results are returned in an instance of Object[].
在执行Query的list()方法时,Hibernate查询方法是首先检查是否配置了查询缓存,如配置了则从查询缓存中寻找是否已经对该查询进行了缓存,如获取不到则从数据库中进行获取。从数据库中获取到后,Hibernate将会相应地填充一级、二级和查询缓存。如获取到的为直接的结果集,则直接返回,如获取到的为一些ID的值,则再根据ID获取相应的记录(Session.load()),最后形成结果集返回。可以看到,在这样的情况下,list ()方法也是有可能造成N次查询的。查询缓存在数据发生任何变化的情况下都会被自动清空。
iterator()方法
Return the query results as an Iterator. If the query contains multiple results pre row, the results are returned in an instance of Object[].
Entities returned as results are initialized on demand. The first SQL query returns identifiers only.
Query的iterator()方法处理查询的方式与list()方法是不同的,它首先会使用查询语句得到ID值的列表,然后再使用Session的load()方法得到所需要的对象的值。
分享到:
相关推荐
文章作者通过实际代码示例展示了在Hibernate中如何使用`list()`和`iterator()`方法获取并遍历查询结果。源码是配合文章内容的实践案例,帮助读者更好地理解和应用这些概念。 【标签】"Hibernate" Hibernate是Java...
《Hibernate难点解析与...理解并灵活运用uuid、get()与load()以及iterator()和list()的区别,是每个Hibernate开发者必备的技能。通过深入学习这些难点,开发者能够更好地驾驭Hibernate,从而提升项目的稳定性和性能。
标题“使用Hibernate封装方法”暗示我们将讨论如何在项目中通过封装Hibernate操作,以提高代码的复用性和可读性。通常,我们会在DAO(数据访问对象)层进行这些封装,将数据库的CRUD(创建、读取、更新、删除)操作...
本文将深入探讨Hibernate中的一些重要方法及其调用,包括get()、load()、list()、iterator()以及HQL查询的相关知识点。 1. get()与load()方法: - get()方法:当尝试获取一个对象时,get()首先会在一级缓存中查找...
本文将深入探讨Hibernate中的几种主要的数据获取方式,包括`Session.get()`与`Session.load()`、`Query.iterator()`与`Query.list()`以及使用HQL(Hibernate Query Language)进行查询。 ### 1. `Session.get()`与`...
本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...
在 doStartTag() 方法中,首先获取 List 对象,然后将其转换为 Iterator 对象,并将其赋值给 it 变量。接着,判断是否存在下一个元素,如果存在,则将其取出并放置到 request 中,以便在 JSP 页面中使用。 在 ...
在Java编程中,`Iterator`是用于遍历集合(如`List`, `Set`等)的重要工具。然而,当我们尝试在使用`Iterator`遍历集合的过程中直接修改集合时,可能会遇到`ConcurrentModificationException`异常。这个异常通常发生...
`Iterator`的`remove()`方法允许开发者在遍历过程中删除当前元素。需要注意的是,该方法只能在调用`next()`之后立即调用,否则会抛出`IllegalStateException`。 ```java Iterator<String> iterator = list.iterator...
在Struts2中,`iterator`标签是用于遍历集合数据的重要工具,它可以用来迭代Map、List和数组等数据结构,以便在视图层进行展示。本篇文章将深入探讨`iterator`标签在遍历这些数据类型时的具体用法。 首先,我们来看...
- **定义**:`Iterator` 提供了一个遍历集合元素的方式,它是 `Collection` 接口中 `iterator()` 方法的返回类型。 - **基本方法**: - `hasNext()`:判断是否有下一个元素。 - `next()`:返回集合中的下一个元素...
Hibernate 难点解析: hibernate中uuid和...Hibernate get与load的区别 hibernate二级缓存中list和iterator的用法 Hibernate中的对象有三种状态: lock和update区别 save 和update区别 update 和saveOrUpdate区别
遍历List对象集合是日常开发中常见的操作,这里我们将详细介绍三种遍历List的方法,并探讨它们的性能特点和适用场景。 ### 第一种:迭代器(Iterator)遍历 ```java for (Iterator<A> it = list.iterator(); it....
该文档是演示迭代器Iterator的使用方法和源代码,其中包括了Iterator的继承类的讲解和再Iterator中的两种方法
除了使用`get()`方法之外,我们还可以使用迭代器(`Iterator`)或增强型`for`循环(也称为“foreach”循环)来遍历`List`中的元素。这两种方法都避免了直接使用索引,这可以减少潜在的数组越界错误。 ##### 使用`...
java java_leetcode题解之Flatten Nested List Iterator
#### 五、`Session`的`load`方法与`get`方法的不同;`Query`的`list`和`iterator`方法的不同 - **5.1 `Session`的`load`与`get`方法** - **`load`方法**: - 当Session缓存中未找到匹配对象时,会抛出`...
Hibernate的`List`方法一次性加载所有数据,适合小数据量,而`Iterator`适合大数据量并按需加载,减少内存消耗。 3. **内存占用**:JDBC通常比Hibernate占用更少的内存,因为它不创建大量对象实例。 4. **适用场景**...
在Java编程中,`iterator()`方法是集合框架中非常关键的一部分,主要用于遍历集合中的元素。当你遇到“方法iterator()找不着的问题”时,这通常意味着你在尝试使用`iterator()`时遇到了错误,可能是由于以下几个原因...