`

session.get()和session.load()的区别

阅读更多
get()----不支持LAZY
  1. Useruser=(User)session.get(User.class,"402880d01b9bf210011b9bf2a2ff0001");
当调用上面的方法时,马上发出查询sql,加载User对象
  1. user.setName("龙哥");
persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
  1. Useruser=(User)session.get(User.class,"asdfsafsdfdsf");
  2. System.out.println("user.name="+user.getName());
采用get加载数据,如果数据库中不存在相应的数据,返回null,它不会抛异常
load()----支持LAZY
  1. Useruser=(User)session.load(User.class,"402880d01b9bf210011b9bf2a2ff0001");
不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
hibernate延迟加载实现原理是代理方式
  1. System.out.println("user.name="+user.getName());

延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)
  1. user.setName("发哥");
persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
  1. Useruser=(User)session.load(User.class,"55555555");
  2. System.out.println("user.name="+user.getName());
  3. //采用load加载数据,如果数据库中没有相应的数据
  4. //那么抛出ObjectNotFoundException
综 上所述,使用load和使用get方法都是可以找到相应的对象的,但发出sql语句的时机不一样,get是在调用get方法时就会发出sql语句,而 load在调用load方法时并不会发出sql语句,只有在调用该查询出来的对象的属性时才会发出sql语句,而当找不到结果时,get得出的结果是 null,但并不会抛异常,load则会抛出异常
分享到:
评论

相关推荐

    session的get与load比较

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

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

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

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

    首先,让我们关注`get`和`load`的区别: 1. **返回结果对比**: - `load`方法如果找不到对应的记录,会抛出`org.hibernate.ObjectNotFoundException`异常。这是因为`load`方法假设给定的ID肯定在数据库中存在,它...

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

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

    hibernat-session方法

    8. **session.get()** - 类似于load(),但当对象不存在时返回null,而不是抛出异常。 9. **session.delete()** - 删除缓存中的对象,并在事务提交时执行删除操作。`session.delete(customer)`会删除与customer关联...

    Hibernate的get和load方法的区别

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

    在hibernate中的数据库操作

    ### 在Hibernate中的数据库操作 ...特别地,`save`、`get`、`load` 和 `delete` 方法是进行基本 CRUD 操作的基础,而理解它们之间的差异能够帮助开发人员更高效地利用 Hibernate 来处理数据库交互。

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

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

    hibernate get load区别

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

    hibernated的线程同步问题

    本篇文章将深入探讨在使用Hibernate时可能会遇到的线程同步问题,以及 Hibernate 中的 session.get() 和 session.load() 方法的异同。 一、Hibernate的并发控制 在多线程环境下,多个线程同时访问和修改数据库记录...

    hibernate示例

    - **读取(Read)**:通过`Session.get()`或`Session.load()`获取对象,或者使用`Query`或`Criteria`进行复杂查询。例如: ```java Session session = sessionFactory.openSession(); MyEntity entity = (MyEntity) ...

    java-Hibernate 检索

    例如,使用 session.get() 或 session.load() 方法可以根据 OID 获取对象。 session.get(Customer.class, 1); 三、HQL 检索 HQL 是 Hibernate 最常用的检索方式,它支持所有 SQL 支持的检索方式。HQL 是一种面向...

    Hibernate-CRUD自用基础模板

    要查询数据库,可以使用`Session`的`get()`或`load()`方法,或者执行HQL(Hibernate Query Language)或Criteria查询。例如,根据ID获取用户: ```java session = sessionFactory.openSession(); User user = ...

    Hibernate的Session的javadoc

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

    纯hibernate增删改差基本操作,入门实例.

    - **Read(查询)**: `session.get()`、`session.load()` 或使用 HQL(Hibernate Query Language)进行复杂查询。 - **Update(更新)**: 修改对象属性后,调用 `session.update()` 方法。 - **Delete(删除)**: ...

    hibernateCRUD

    读取数据通常通过Session的get()、load()或query()方法完成。比如查询所有用户: ```java Session session = factory.openSession(); Transaction transaction = session.beginTransaction(); List<User> users = ...

    javahibernate应用举例

    例如,我们可以使用`Session.save()`方法来保存一个新的对象到数据库,`Session.get()`或`Session.load()`来查找特定ID的对象,`Session.update()`更新已存在的对象,而`Session.delete()`则用于删除对象。...

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

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

    Hibernate几种获数据方法比较

    `Session.get()`和`Session.load()`是Hibernate中用于根据主键ID加载实体对象的两种方法。这两种方法的主要区别在于异常处理和懒加载支持上: - **`Session.get()`**: 当指定的ID不存在时,`get()`方法返回`null`,...

    hibernate增删改查代码

    最基础的是通过Session的get()或load()方法获取单个对象,通过createQuery()或createSQLQuery()执行HQL或SQL查询多个对象。下面是一个简单的HQL查询示例: ```java Session session = HibernateUtil....

Global site tag (gtag.js) - Google Analytics