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

Hibernate一级缓存(一)-Session级缓存

 
阅读更多
定义
二级缓存是session中有一块内存空间。缓存内对象为持久化对象,session根据持久化对象状态的变化来更新数据库。理论上session缓存不需要人工控制。

相关函数对缓存的影响:
save(): 会把对象加入到缓存中,并且执行insert语句,对象变为持久化对象。

get()和load(): 作用为获取对象,先会在缓存中查找是否存在,如果不存在则去数据库查找并放入缓存中。返回的对象都是缓存中的持久化对象。如果用户在外部修改了持久化对象的属性(成为游离对象),则在session.close()函数中会根据属性的变化来更新数据库。
两者区别:
(1)数据库不存在对应对象时,get()函数返回null,而load函数则抛出ObjectNotFoundException异常。
(2)load()采用延迟加载策略,不会马上执行select语句,只返回一个代理实例,内存占用少,适合通过该对象标示删除或查询其他对象的场景。get()则是马上执行select语句,并且返回对象实例和属性。

update(): update()会把游离对象加入到缓存,并且计划执行update()语句,如果update()关联的为持久化对象,则不起作用。

merge(): 会把游离对象的属性复制到一个持久化对象中。

saveOrUpdate(): 如果传入临时对象,则执行save();如果传入游离对象,则update();传入持久化对象,则直接返回该对象。

delete(): 计划执行一个delete语句

close(): 清空Session中缓存
分享到:
评论

相关推荐

    hibernate一级缓存和二级缓存的区别与联系

    它是一个事务范围的缓存,也就是说,每个 Hibernate Session 对应一个一级缓存,仅在当前事务中有效。一级缓存主要存储了 Session 在当前事务中加载和修改的对象实例。当 Session 执行 CRUD 操作时,对象会自动放入...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    本篇文章将深入探讨Hibernate的二级缓存机制,以及如何进行一级缓存与二级缓存的同步,同时还会介绍二级缓存的配置文件设置。 一级缓存是Hibernate默认提供的缓存,每个SessionFactory实例都有一个一级缓存。当对象...

    hibernate一级缓存、二级缓存和查询缓存

    一级缓存是Hibernate内置的Session级别的缓存,也被称为事务性缓存。每当我们在Session中进行对象的CRUD(创建、读取、更新、删除)操作时,这些操作实际上并未立即同步到数据库,而是被暂时保存在一级缓存中。一级...

    Hibernate一级缓存和二级缓存

    一级缓存是Session级别的,而二级缓存是SessionFactory级别的,两者在数据库操作中起到了重要的作用。 描述中提到的链接可能是对Hibernate缓存机制的详细技术博客,但具体内容未给出。因此,我们将基于常规的...

    Hibernate一级缓存、二级缓存以及查询缓存实例

    一级缓存是Hibernate默认提供的缓存,它是每个Session级别的,也被称为事务级缓存。当我们在Session中进行对象的增删改查操作时,这些对象会被放入一级缓存中。一级缓存的作用在于避免频繁地与数据库交互,提高效率...

    hibernate一级缓存

    一级缓存,也称为session缓存,是每个Hibernate Session内部管理的一个内存结构。在本篇文章中,我们将深入探讨一级缓存的工作原理、作用以及如何有效地利用它。 ### 一级缓存的工作机制 1. **对象持久化过程**:...

    hibernate一级和二级缓存配置与详解

    一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们在Session中对对象进行 CRUD(创建、读取、更新、删除)操作时,这些对象会被自动放入一级...

    hibernate二级缓存实例

    一级缓存是Session级别的,每个Session都有自己的一级缓存,用于存储当前Session操作的对象。而二级缓存则是SessionFactory级别的,它跨越了多个Session,是全局共享的,可以被多个并发的Session共同使用。 二级...

    hibernate的一级缓存和二级缓存

    一级缓存,也称为Session缓存,是每个Hibernate Session实例私有的。当Session执行查询操作时,会将结果存储在一级缓存中。如果同一Session再次执行相同的查询,Hibernate将直接从一级缓存获取数据,避免了重复的...

    Hibernate二级缓存

    这与一级缓存(Session级别)不同,一级缓存仅存在于单个Session生命周期内,当Session关闭时,一级缓存中的数据会丢失。二级缓存的存在减少了对数据库的直接访问,从而提高了数据读取速度。 为了启用Hibernate的二...

    hibernate二级缓存示例源码

    Hibernate的一级缓存是Session级别的,它自动管理对象的状态,提供瞬时、持久化和脱管状态之间的转换。然而,一级缓存的范围有限,当Session关闭时,其中的数据会被清除。为了解决这个问题,Hibernate引入了二级缓存...

    hibernate 二级缓存详解

    Hibernate 二级缓存是针对SessionFactory级别的全局缓存,与一级缓存(Session级别)不同,一级缓存只在单个Session生命周期内有效。二级缓存则允许不同Session之间共享数据,提高了数据访问效率,减少了对数据库的...

    Hibernat一级缓存(源码)

    1. 当我们通过 Hibernate 的 Session 加载或保存一个实体时,这个实体会被放入一级缓存中。 2. 如果后续对同一实体进行查询,Hibernate 会首先检查一级缓存,如果找到则直接返回,避免了对数据库的重复查询。 3. 当 ...

    hibernate二级缓存java包下载

    - 一级缓存:每个 Hibernate Session 对象都有一个一级缓存,它是默认开启的。当对象被加载到 Session 中,它们会被存储在一级缓存中,直到 Session 被关闭。一级缓存是事务范围的,只对当前 Session 可见。 - 二...

    Hibernate 二级缓存 总结整理

    当我们在Session中对实体进行CRUD操作时,数据会首先被缓存到一级缓存中,同一Session内的后续查询会优先从一级缓存中获取数据,避免了频繁访问数据库。 2. **二级缓存(Second-Level Cache)**:一级缓存的局限...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    通常,一级缓存由Hibernate Session管理,而二级缓存则可以跨越多个Session进行共享。 在Spring Boot项目中配置Redis作为Hibernate的二级缓存,我们需要以下步骤: 1. **添加依赖**: 首先,在`pom.xml`文件中...

    hibernate二级缓存包

    1. **二级缓存的作用**:一级缓存是每个Session内部的缓存,用于存储Session内的对象,而二级缓存则是一个全局范围的缓存,它可以在多个Session之间共享,减少了对数据库的频繁访问,尤其是在读多写少的场景下,性能...

    hibernate二级缓存

    一级缓存是默认开启的,它与Session对象关联,主要负责在同一个事务内部管理对象的状态。一级缓存会跟踪所有在事务中被修改的对象,确保在事务提交时仅生成必要的SQL语句来更新数据库。例如,如果一个对象在事务内被...

    47-二级缓存 Hibernate-Shiro-MyBatis

    一级缓存是每个Session内的缓存,而二级缓存则可以在多个Session之间共享。Hibernate的二级缓存主要通过插件实现,如Ehcache和Infinispan。配置二级缓存涉及以下几个步骤: 1. 添加缓存提供者的依赖。 2. 在...

    hibernate二级缓存所需要的 jar包

    Hibernate的一级缓存是指Session级别的缓存,每个Session内部都有一个一级缓存,用于存储实体对象,当Session关闭时,一级缓存中的数据也会被清除。而二级缓存则是一个SessionFactory级别的缓存,它跨越多个Session...

Global site tag (gtag.js) - Google Analytics