`
javajdbc
  • 浏览: 43073 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate中session 的get()和load() 两个方法的区别之处

阅读更多

1、访问DB后当找不到符合条件的数据,get()方法将返回null;而load()将会报出ObjectNotFoundEcception。

2、执行get()方法是会访问DB进行SQL操作;而load()则不进行SQL的任何查询动作,只有在真正用到对象的属性时才执行数据的查询操作。

3、load()方法可以返回实体的代理类,get()方法则返回真是的实体类。

4、load()方法可以充分利用hibernate的内部缓存和二级缓存中的现有数据,而get()方法仅仅在内部缓存中进行数据查找,如果没有发现数据时则将越过二级缓存,直接调用SQL查询数据库。

 

 

 

 

1
0
分享到:
评论
1 楼 javajdbc 2010-10-11  


l:load方法(顾名思义,load的意思是‘加载’)它会搜索二级的缓存的,充分地利用二级缓存,绝对不会用sql去数据库查询,会返回一个实体代理对象(当前这个对象可以自动转化为实体对象),但当代理对象被调用时,如果没有数据不存在,就会抛出个org.hibernate.ObjectNotFoundException异常

2:get方法(顾名思义,get的意思是‘获取’),它去会搜索session缓存,如果发现存在,即从缓存中取出,并加载到缓存中;否则用sql去数据库中查询,如果数据库中都没有查到,返回null,不会抛出任何异常。 

综述:很明显方法的意义不同,使用该方法的动机是:在缓存中找不到数据时,你是否希望到数据库中查询。从这个动机来说,只要是考虑尽量减少对数据库不必要的查询。。。 

相关推荐

    hibernate get load区别

    ### Hibernate中的Get与Load方法详解 #### 概述 在Hibernate框架中,`get`与`load`方法都是用于从数据库加载实体对象的常用手段。然而,这两种方法在实现细节上有着本质的区别,这些差异主要体现在对缓存的利用、...

    session的get与load比较

    在Hibernate中,`Session`接口提供了`get`和`load`两种方法来获取数据库中的实体对象。 1. **get** 方法:尝试从当前Session的缓存中获取指定ID对应的实体对象;如果缓存中不存在,则直接执行SQL查询语句从数据库中...

    Hibernate的get和load方法的区别

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

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

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

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

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

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

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

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

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

    hibernate和session学习

    在Hibernate中,`SessionFactory`是核心组件之一,它是线程安全的,用于创建`Session`对象。`SessionFactory`通常在应用启动时创建一次,然后在整个应用生命周期中复用。创建`SessionFactory`需要通过读取Hibernate...

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

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

    重写hibernate的session简单增删改查

    "重写hibernate的session简单增删改查"是一个针对初学者的实践教程,旨在帮助理解如何在Hibernate中自定义Session的操作,以便更好地控制数据库交互。 一、Hibernate Session Hibernate的Session是与数据库交互的...

    Hibernate(session管理)

    在Java的持久化框架中,Hibernate是一个非常重要的组件,它为开发者提供了强大的对象关系映射(ORM)功能,使得在Java应用中操作数据库变得更加简单。本文将深入探讨Hibernate中的核心概念——Session管理。 首先,...

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

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

    Hibernate的Session的javadoc

    通过Session的get()或load()方法获取的对象默认处于此状态。 - **游离状态(Detached)**:对象曾经是持久化的,但当前未与任何Session关联。对象在游离状态下可以被重新持久化。 2. **对象持久化操作**: - **...

    hibernate session生命周期示例

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

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

    2. **事务处理**:在Session方法中通常会包裹在一个事务中,以确保数据操作的一致性和完整性。 3. **对象状态管理**:Hibernate需要跟踪对象的状态,如临时态、持久态、游离态,以便决定何时进行保存、更新或删除...

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

    Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、删除和检索对象。Session对象就像一个临时的工作区域,用于在应用程序和数据库之间传递信息。当我们在Session上进行操作时,这些操作...

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

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

    对Hibernate Session做一个简单的包装

    `Session`接口提供了多种方法来与数据库交互,如`save()`, `update()`, `delete()`, `get()`, `load()`以及`createQuery()`等。然而,在实际开发中,我们往往需要根据项目需求对其进行定制,例如添加事务管理、异常...

    hibernate session详细方法,值得珍藏

    - **`createQuery(String queryString)`** 和 **`createSQLQuery(String queryString)`**:这两个方法分别用于创建基于HQL(Hibernate查询语言)和原生SQL的查询。HQL提供了一种面向对象的查询方式,而原生SQL则直接...

    Hibernate中load方法与get方法的区别

    在Hibernate框架中,`load()`和`get()`都是用于从数据库中检索对象的方法,但它们在功能和行为上存在显著的差异。理解这些差异对于优化应用程序的性能和处理潜在异常至关重要。 首先,`load()`方法执行延迟加载策略...

Global site tag (gtag.js) - Google Analytics