`
天门冬
  • 浏览: 1923 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Hibernate总结(20080218)get与load区别

阅读更多

get 和 load 区别
load加载方法:

Users user = (Users)session.load(Users.class, userId);  

get加载方法:

Users user = (Users)session.get(Users.class, userId);

 

两加载方法区别:

区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException;

区别2:load支持延迟加载,get不支持延迟加载。

也就是说:
Users user = (Users)session.load(Users.class, userId);

这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。

而:
Users user = (Users)session.get(Users.class, userId);

则立即去执行数据库查询。 所以Users user = (Users)session.load(Users.class, userId);不会执行任何sql。

注意:
Users user = (Users)session.load(Users.class, userId);
System.out.println(user.getId());

上面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。

 

分享到:
评论
1 楼 vieri122 2008-02-18  
简单的代码 很有代表性
学习了

相关推荐

    hibernate get load区别

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

    hibernate中get和load方法的区别

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

    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和lo”暗示了标签可能被意外截断,但我们可以推断完整标签可能是“hibernate中get和load的区别”。 在实际开发中,选择使用`get`还是`load`取决于具体需求。如果需要立即从数据库中获取对象,...

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

    - 在进行Hibernate查询测试时,应确保数据库连接配置正确,实体类与表结构对应,并在测试代码中模拟不同场景,如正常加载、延迟加载、不存在的实体等,以全面验证`load`和`get`的行为。 - 对于`query`和`criteria`...

    session的get与load比较

    本文将深入探讨`get`与`load`两种方法的区别及其应用场景。 #### 一、基本概念 在Hibernate中,`Session`接口提供了`get`和`load`两种方法来获取数据库中的实体对象。 1. **get** 方法:尝试从当前Session的缓存...

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

    本文主要讨论了`get`、`load`方法以及`flush`、`clear`、`evict`等方法的区别。 首先,让我们关注`get`和`load`的区别: 1. **返回结果对比**: - `load`方法如果找不到对应的记录,会抛出`org.hibernate....

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

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

    Hibernate4总结文档

    - 读取(Read):使用`Session.get()`或`Session.load()`根据ID获取对象,`Query`接口则提供了更灵活的查询方式。 - 更新(Update):调用`Session.update()`或`Session.saveOrUpdate()`更新对象。 - 删除...

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

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

    jdbc_Hibernate总结

    在Hibernate中,`Session`对象提供了`get`和`load`方法来查询数据。`load`方法采用延迟加载机制,只有在真正使用对象时才会执行SQL,而`get`方法则立即执行查询。`flush()`、`clear()`和`close()`方法分别用于清理...

    hibernate学习总结文档

    2. **读取(Read)**:`get()` 或 `load()` 方法用于根据主键获取对象,`query()` 或 HQL(Hibernate 查询语言)用于执行更复杂的查询。 3. **更新(Update)**:修改对象后,调用 `update()` 或 `merge()` 方法同步...

    hibernate get/load/saveOrUpdate/statistics

    博文链接:https://log-cd.iteye.com/blog/205166

    Hibernate课程的总结

    3. 查询:通过`session.load()`加载对象,`session.get()`按ID获取,HQL或Criteria API实现复杂查询。 4. 删除:`session.delete()`移除对象。 **六、HQL与Criteria API** 1. HQL:面向对象的查询语言,类似SQL,但...

    Hibernate总结——课程管理

    使用`Session.get()`或`Session.load()`根据主键获取对象,或者使用`Session.createQuery()`或`Session.createCriteria()`执行HQL(Hibernate查询语言)或SQL查询。 3. **更新(Update)** 修改对象的属性,然后...

Global site tag (gtag.js) - Google Analytics