`
海盗大哥
  • 浏览: 64265 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate的load get方法 与 lazy 属性结合说明

阅读更多
get-->session缓存-->二级缓存-->数据库
结果:null 或实体对象
               
              存在---->(不发生查询)得到实体对象
load-->session缓存---->数据库(数据库中没有)报错
              不存在--->代理对象
结果:错误 或 代理类 或 实体类

总结:get方法(缓存没有这个对象时)它总是发生了查询 并且不报错
      load方法(用时总是要未卜先知的知道数据库是有这样的对象存在)并且一开始它就给自己来了个延时加载..当真正用到里面属性时 发生查询(代理对象的情况) 不发生查询(实体对象)

lazy (注意:前提是当发生某个查询时)是否级联把它的属性内容 set list集合也查出来了..

总结:总之要把load get方法 与 lazy 属性分开讨论!!
这里还要注意的是:用load get 方法以后 要特别注意session是否关闭了
通常关闭后 所有对象都是游离 或 新生态了再用这个对象,当可能发生查询的情况下,特别要注意及时的跟session关联 一般用 update方法就OK了...
1.0
分享到:
评论

相关推荐

    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中get和load的区别共5页.pdf

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

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

    在Hibernate框架中,Session是与数据库交互的主要接口,它提供了多种方法来操作对象的状态和数据。本文主要讨论了`get`、`load`方法以及`flush`、`clear`、`evict`等方法的区别。 首先,让我们关注`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完全讲解实例演示

    理解 Hibernate 中的 Session 状态管理和 Load 与 Get 方法的差异是有效使用 Hibernate 进行数据操作的基础。掌握这些概念可以帮助开发者更好地管理对象的生命周期,避免潜在的错误,并优化数据库交互的性能。

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

    在Java的持久化框架Hibernate中,延迟加载(Lazy Load)是一项重要的优化策略,其核心目标是提高系统性能,减少内存占用,避免不必要的数据库交互。延迟加载允许我们在需要使用数据时才从数据库中加载,而不是在加载...

    Hibernate加载方式与多态加载分析

    相反,如果lazy设置为false,`load`方法的行为就与`get`方法类似,可以支持多态加载。`get`方法默认不使用CGLIB懒加载,所以在加载时会直接返回实体的真实类,这使得它天生支持多态加载。无论使用`load`还是`get`,...

    个人对hibernate的看法,应该会对大家有一

    - **Load与Get方法**:`load`和`get`方法用于从数据库加载对象。`load`方法在没有找到对应记录时会抛出异常,而`get`方法则会返回`null`。此外,`get`方法允许指定一个ID来加载特定的实体,这在某些场景下非常有用。...

    Hibernate官方中文参考手册下载

    - **读取(READ)**:`Session.get()`或`Session.load()`用于根据主键获取对象,`Query`和`Criteria`接口提供了更复杂的查询能力。 - **更新(UPDATE)**:修改对象后,调用`Session.update()`或`Session.merge()`方法...

    Hibernate延迟加载

    Load方法支持延迟加载,而Get方法则不支持。当你调用Load方法时,Hibernate不会立即执行SQL查询,而是返回一个代理对象。只有当你尝试访问该对象的属性时,才会触发实际的数据库查询。而Get方法则会立即从数据库中...

    hibernate学习总结文档

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

    Hibernate 框架总结

    - load方法则根据映射文件上类级别的lazy属性配置,默认是true。如果该属性为true,则Session会首先在缓存中查找,如果缓存中不存在,会返回一个代理类对象而不是真实实体对象,等到实际使用该对象时(比如获取OID...

    hibernate_first_new项目源码

    - Session的get()和load()方法:用于根据主键获取对象,load()方法会立即返回代理对象,而get()则在需要时才执行SQL查询。 - Query和Criteria API:提供SQL-like查询和基于对象的查询方式,支持动态构建查询条件和...

    hibernate_hibernate_

    1. 加载和保存实体:通过Session的load()方法加载实体,save()或saveOrUpdate()方法保存新实体,update()方法更新已存在的实体。 2. 查询:利用Session的get()方法获取单个实体,query()或createCriteria()方法执行...

    Eclipse快速上手Hibernate

    然后,可以使用Session的`save()`, `update()`, `delete()`, `get()`, `load()`等方法进行CRUD操作。 ### 8. Query与Criteria查询 Hibernate提供HQL(Hibernate Query Language)和Criteria API来进行数据查询。...

Global site tag (gtag.js) - Google Analytics