1.读取时机不同(当lazy=true的时候)
load是采用延迟机制(load语句不读库,等使用非主键时才去读库),而get不采用延
迟机制(get语句时马上读库);
2.搜索不到数据时的情况
当搜索的数据不存在的时候,load依然会返回一个对象,在你使用该对象的非主键数
据时,会抛出异常;
当搜索的数据不存在的时候,get会返回一个null;
其实看似load到用的时候才去读数据库,比get要节省资源,但还没深入研究过。
3.get不支持lazy load支持lazy
4.采用get加载数据时,如果无匹配数据则返回null load则报异常
------------------------------------------------------------
hibernate lazy策略可以使用在:
* <class>标签上,取true,false值
* <property>标签上,取true,false需要增强类
* <set><list>上,取false,true,extra
* <one-to-one>、<many-to-one>单端关联上,可以取值false/proxy/noproxy
lazy概念:
只有真正使用该对象时,才会创建,对hibernate而言,真正使用的时候才会发出,
hibernate支持lazy策略只有在session打开状态下才有效如果把用延迟加载的话数据传递给动态
页面那么使用OpenSessionInView模式,直到我们把session中的所有属性用完了,才关闭session。
A.<class>标签上的lazy特性只对普通属性起作用hibernate在集合上的lazy策略,取值false,
true,extra
B.<class>标签上的lazy不会影响到集合上面的lazy特性,lazy默认为true;
C.集合标签上面的lazy特性推荐使用 extra 因为比较智能
D.在<class>上lazy为true时,load时不发出sql语句,只有在使用是才发出。为false时load时就
马上发出sql语句。
E.在<class>上lazy为true时,load时不发出sql语句,只有使用时才发出。为false时在第一次
load时就执行全部sql语句。为extra时,和true差不多,不过发出的sql语句比较智能。
F.hibernate 在<one-to-one><many-to-one>单端关联上,可以取值false/proxy/noproxy 默认proxy
G.<class>标签上的lazy不会影响到单端上面的lazy特性。
------------------------------------------------------------
Hibernate.initialize(Object proxy) 方法强制加载这样就相当于在程序中动态改变为lazy=false
分享到:
相关推荐
在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。 首先,`get`方法是直接从数据库中...
### Hibernate中的Get与Load方法详解 #### 概述 在Hibernate框架中,`get`与`load`方法都是用于从数据库加载实体对象的常用手段。然而,这两种方法在实现细节上有着本质的区别,这些差异主要体现在对缓存的利用、...
在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。 首先,让我们来深入了解一下`get`...
`load`和`get`方法是Hibernate中用于检索实体的两种主要方式,它们都是从Session接口中调用,但有明显的区别和各自的适用场景。 1. `load`方法: - `load`方法主要用于根据主键加载对象,它返回一个代理对象,而...
本篇文章将详细解析Hibernate中的三种主要查询方式——HQL(Hibernate Query Language)、Criteria API和Query API,并着重讨论`load()`与`get()`方法的区别。 一、HQL查询 Hibernate Query Language(HQL)是...
在Java的持久化框架Hibernate中,`get`和`load`是两个常用的方法,它们都是用来从数据库中获取对象的。然而,它们在工作原理和使用场景上存在一些关键的区别,这些区别对于理解和优化Hibernate应用至关重要。 首先...
在Hibernate框架中,Session是与数据库交互的主要接口,它提供了...了解这些概念和方法的区别对于高效地使用Hibernate进行数据库操作至关重要,可以根据具体场景选择合适的方法来优化应用程序的性能和数据处理逻辑。
在Hibernate框架中,`load()`和`get()`都是用于从数据库中检索对象的方法,但它们在功能和行为上存在显著的差异。理解这些差异对于优化应用程序的性能和处理潜在异常至关重要。 首先,`load()`方法执行延迟加载策略...
Hibernate中Session.get()方法和load()方法是两个常用的数据访问方法,但它们之间有着本质的区别。 首先,从返回值上看,get()方法直接返回实体类,如果查不到数据则返回null。load()方法则返回一个实体代理对象,...
在Hibernate ORM框架中,获取持久化对象的两种主要方法是`get()`和`load()`。它们都是用来根据主键ID查询数据库中的实体对象,但两者在执行机制和返回结果上有显著的区别。 1. `get()`方法 当调用`session.get()`...
在Hibernate中,`Session`接口提供了`get`和`load`两种方法来获取数据库中的实体对象。 1. **get** 方法:尝试从当前Session的缓存中获取指定ID对应的实体对象;如果缓存中不存在,则直接执行SQL查询语句从数据库中...
5. CRUD操作:Hibernate提供了便捷的方法来完成创建(save()、persist())、读取(get()、load()、query())、更新(update()、merge())和删除(delete())对象的操作。其中,HQL(Hibernate Query Language)和...
以下是对标题和描述中提到的HibernateTemplate方法的详细总结: A. `get` 和 `load`: 这两个方法都是用于从数据库中获取单个对象。`get`方法直接返回一个实体对象,如果数据库中没有找到对应ID的数据,则返回null...
例如,使用`save()`或`persist()`方法创建新对象,`load()`或`get()`方法读取对象,`update()`或`merge()`方法更新对象,以及`delete()`方法删除对象。 3. 查询语言(HQL):Hibernate查询语言,类似于SQL,但面向...
例如,使用`save()`或`saveOrUpdate()`方法保存实体,`load()`或`get()`方法获取实体,`update()`或`merge()`更新实体,以及`delete()`方法删除实体。 事务处理是数据库操作的重要部分,Hibernate通过`Transaction`...
本文将针对Hibernate中的几个重要概念进行详细讲解,包括主键生成策略、get()与load()的区别以及二级缓存的使用。 首先,探讨的是Hibernate中的主键生成策略。在Hibernate中,主键的生成主要有三种方式:uuid、...
Hibernate提供了持久化操作,如保存(`save()`)、更新(`update()`)、删除(`delete()`)和加载(`get()`、`load()`)等方法。 查询语言方面,Hibernate支持HQL(Hibernate Query Language)和 Criteria 查询。...
此外,还包括了持久化操作,如保存(save或persist)、更新(update)、删除(delete)以及加载(get或load)实体的方法。 关于关联映射,文档会讲解一对一、一对多、多对一、多对多等各种关联关系的建立,以及如何...
本文将深入探讨Hibernate中的一些重要方法及其调用,包括get()、load()、list()、iterator()以及HQL查询的相关知识点。 1. get()与load()方法: - get()方法:当尝试获取一个对象时,get()首先会在一级缓存中查找...