`
merry爱编程
  • 浏览: 9378 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类

hibernate 的get load方法

 
阅读更多
[size=xx-small]2.load()和get()的区别 load加载方法: Java代码 Users user = (Users)session.load(Users.class, userId);     Users user = (Users)session.load(Users.class, userId); get加载方法: Java代码 Users user = (Users)session.get(Users.class, userId);   Users user = (Users)session.get(Users.class, userId); 两加载方法区别: 区别1:
如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;
如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException; 区别2:load支持延迟加载,get不支持延迟加载。 也就是说: Java代码 Users user = (Users)session.load(Users.class, userId);   Users user = (Users)session.load(Users.class, userId); 这句代码不会去执行数据库查询,只有用到user时才会去执行数据库查询。 而: Java代码 Users user = (Users)session.get(Users.class, userId);   Users user = (Users)session.get(Users.class, userId); 则立即去执行数据库查询。
所以Users user = (Users)session.load(Users.class, userId);
不会执行任何sql。 注意: Java代码 Users user = (Users)session.load(Users.class, userId);    System.out.println(user.getId());   上面这2句代码,不会去执行数据库操作。因为load后会在hibernate的一级缓存里存放一个map对象,该map的key就是userId的值,但是当你getId()时,它会去一级缓存里拿map的key值,而不去执行数据库查询。所以不会报任何错。不会执行任何数据库操作。
[/size]
分享到:
评论

相关推荐

    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的区别及其它查询测试

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

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

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

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

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

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

    在Java的持久化框架Hibernate中,`get`和`load`是两个常用的方法,它们都是用来从数据库中获取对象的。然而,它们在工作原理和使用场景上存在一些关键的区别,这些区别对于理解和优化Hibernate应用至关重要。 首先...

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

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

    session的get与load比较

    ### Session的Get与Load方法比较 在对象关系映射(ORM)框架中,如Hibernate,开发者经常需要通过Session对象来加载或获取实体对象。本文将深入探讨`get`与`load`两种方法的区别及其应用场景。 #### 一、基本概念 ...

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

    "Hibernate中Session.get()方法和load()方法的详细比较" Hibernate中Session.get()方法和load()方法是两个常用的数据访问方法,但它们之间有着本质的区别。 首先,从返回值上看,get()方法直接返回实体类,如果查...

    hibernate get/load/saveOrUpdate/statistics

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

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

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

    Hibernate方法总结

    而`load`方法返回的是一个代理对象,即使数据库中没有对应的记录,它也会返回一个空的代理对象,只有当真正访问属性时才会抛出`EntityNotFoundException`异常。因此,当你确定对象一定存在时,可以使用`get`;不确定...

    Hibernate的Template方法以及SQL简介

    与`get`方法类似,但`load`方法会在找不到对应实体时抛出异常。 3. **全表查询** ```java Query query = session.createQuery("from Order"); List<Order> list = query.list(); ``` 此方法用于查询表中的...

    hibernate难点重点笔记

    其次,我们来讨论Hibernate的get()与load()方法。两者都是用于根据ID获取对象,但行为有所不同。get()方法假设数据库中存在对应ID的对象,若找不到则返回null。而load()方法则返回一个对象的代理,延迟加载直到真正...

    Hibernate查询解决方案

    本文详细介绍了 Hibernate 提供的各种查询方式,包括 `load`、`get`、`createQuery` 和 `find` 等方法,并重点阐述了 HQL 查询的基本用法和高级技巧。通过本文的学习,读者可以掌握 Hibernate 的基本查询操作,并能...

    hibernate session详细方法,值得珍藏

    - **`get(Class clazz, Serializable id)`** 和 **`get(String entityName, Serializable id)`**:这些方法与`load()`类似,但它们会在找不到实体时抛出异常,这使得它们在需要强制实体存在的场景下更有用。...

Global site tag (gtag.js) - Google Analytics