`

Hibernate中Session加载数据时 get()和load()方法的区别

    博客分类:
  • SSH
阅读更多

    hibernate中有两个加载对象的方法,一个是load(Class obj1,Serializable obj2),另一个是get(Class obj1,Serializable obj2),他们都可以通过指定的实体类ID 从数据库中读取数据,并返回对应的实例

 

    load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,数据库中不存在该记录,只能抛异常。

 

    get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。

 

    get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;

    load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库。

 

    总结:hibernate对于load方法认为该数据在数据库中一定存在,可以放心的使用代理来延迟加载,如果在使用过程中发现了问题,只能抛异常;而对于get方法,hibernate一定要获取到真实的数据,否则返回null。

分享到:
评论

相关推荐

    hibernate get load区别

    在Hibernate框架中,`get`与`load`方法都是用于从数据库加载实体对象的常用手段。然而,这两种方法在实现细节上有着本质的区别,这些差异主要体现在对缓存的利用、异常处理机制以及是否支持懒加载等方面。 #### `...

    session的get与load比较

    - **load** 方法:只有当调用了`load`返回的对象的属性或方法时,Hibernate才会执行SQL查询语句加载数据。这种机制称为懒加载(Lazy Loading)。 例如: ```java TFaq tfag2 = (TFaq) sess.load(TFaq.class, 300); ...

    Hibernate的get和load方法的区别

    在Java的持久化框架Hibernate中,`get`和`load`方法都是用于从数据库中获取对象,但它们之间存在一些重要的区别。理解这些差异对于优化应用程序的性能和避免潜在问题至关重要。 首先,让我们来深入了解一下`get`...

    Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别

    在Hibernate框架中,Session是与数据库交互的主要接口,它提供了多种方法来操作对象的状态和数据。本文主要讨论了`get`、`load`方法以及`flush`、`clear`、`evict`等方法的区别。 首先,让我们关注`get`和`load`的...

    hibernate中get和load的区别共5页.pdf

    在Hibernate框架中,`get`和`load`都是用于从数据库中检索持久化对象的方法,但它们在工作原理和使用场景上存在着显著的区别。本文将深入探讨这两个方法的差异,并结合实际应用进行详细阐述。 首先,`get`方法是...

    hibernate 三种 查询 方式 load与get的区别

    本篇文章将详细解析Hibernate中的三种主要查询方式——HQL(Hibernate Query Language)、Criteria API和Query API,并着重讨论`load()`与`get()`方法的区别。 一、HQL查询 Hibernate Query Language(HQL)是...

    Hibernate中Session.get()方法和load()方法的详细比较

    Hibernate中Session.get()方法和load()方法是两个常用的数据访问方法,但它们之间有着本质的区别。 首先,从返回值上看,get()方法直接返回实体类,如果查不到数据则返回null。load()方法则返回一个实体代理对象,...

    Hibernate查询 load与get的区别及其它查询测试

    `load`和`get`方法是Hibernate中用于检索实体的两种主要方式,它们都是从Session接口中调用,但有明显的区别和各自的适用场景。 1. `load`方法: - `load`方法主要用于根据主键加载对象,它返回一个代理对象,而...

    重写hibernate的session简单增删改查

    更新数据时,首先需要从数据库加载需要更新的对象,然后修改对象的属性,最后调用Session的update()方法。Hibernate会识别出对象的变化,并生成对应的SQL更新语句。 4. 查询(Query) 查询是通过Session的get()、...

    hibernate和session学习

    `Session`的常用方法包括:`save()`, `update()`, `delete()`, `get()`, `load()`, `query()`等。 1. `save()` 和 `update()`: `save()`用于将新对象持久化到数据库,如果对象已经存在,可以使用`update()`来更新其...

    Hibernate之数据加载方式

    1. **单个对象加载(Single Entity Loading)**:通过`Session.get()`或`Session.load()`方法加载单个对象,前者会立即从数据库中取数据,后者创建代理对象,数据在第一次访问时加载。 2. **集合加载(Collection ...

    Hibernate(session管理)

    综上所述,理解和熟练掌握Hibernate中的Session管理对于开发高效、健壮的Java应用程序至关重要。正确地使用Session,结合事务控制、查询语言和缓存策略,可以显著提升数据库操作的效率和应用的整体性能。

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    可以使用`get()`或`load()`方法获取单个对象,`query()`或`createCriteria()`方法创建查询,并通过执行查询获取结果集。例如,使用HQL(Hibernate Query Language)查询: ```java Query<MyEntity> query = session...

    hibernate session生命周期示例

    - **加载和检索**:使用`get()`或`load()`方法可以加载一个实体,如果对象存在于数据库,Hibernate将返回一个对应的代理对象。 - **保存和插入**:`save()`方法用于将瞬时对象转换为持久化对象,而`persist()`方法...

    实现自己的Hibernate框架之Session 方法实现

    get()方法直接返回对象,而load()则返回一个代理对象,只有在需要时才从数据库加载数据,以实现懒加载。 5. **查询(createQuery()、createSQLQuery()、find()等)**:Hibernate提供丰富的查询方式,如HQL...

    Hibernate的Session的javadoc

    了解并熟练掌握这些概念和方法,能帮助开发者更好地理解和利用Hibernate的透明持久化能力,有效地管理对象的状态和事务,从而提高应用的性能和数据一致性。对于初学者来说,阅读Hibernate的javadoc是非常有益的,...

    Hibernate中get()和load()的区别.docx

    在Hibernate ORM框架中,获取持久化对象的两种主要方法是`get()`和`load()`。它们都是用来根据主键ID查询数据库中的实体对象,但两者在执行机制和返回结果上有显著的区别。 1. `get()`方法 当调用`session.get()`...

    04_传智播客hibernate教程_Session接口及getloadpersist方法

    本教程聚焦于Hibernate中的Session接口以及get、load、persist这三个常用的方法,它们是 Hibernate 实现对象-关系映射(ORM)的核心组件。 首先,我们来理解Session接口。Session在Hibernate中扮演着数据库连接的...

    Hibernate 延迟加载剖析与代理模式应用

    在实际运行中,当我们通过`session.get(Person.class, 1)`获取一个`Person`对象时,如果没有明确地访问`addresses`,Hibernate只会加载`Person`的基本信息,而不会加载与之关联的`Address`集合。在调试模式下,我们...

    hibernate延迟加载解决

    Hibernate 是一款流行的 Java 持久层框架,它支持多种加载策略,包括即时加载和延迟加载。在本文中,我们将重点讨论后者。 ##### 1. 实体对象的延迟加载 **配置方式:** 要在Hibernate中启用实体对象的延迟加载,...

Global site tag (gtag.js) - Google Analytics