`

hibernate一二级缓存简单介绍

阅读更多
Hibernate缓存的作用:
    Hibernate是一个持久层框架,经常访问物理数据库,为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据
Hibernate缓存分类:
    Hibernate缓存包括两大类:Hibernate一级缓存和Hibernate二级缓存。
    Hibernate一级缓存又称为“Session的缓存”,它是内置的,不能被卸载(不能被卸载的意思就是这种缓存不具有可选性,必须有的功能,不可以取消session缓存)。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必需的,不允许而且事实上也无法卸除。在第一级缓存中,持久化类的每个实例都具有唯一的OID。
    Hibernate二级缓存又称为“SessionFactory的缓存”,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此Hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,SessionFactory不会启用这个插件。

什么样的数据适合存放到第二级缓存中?   
  1 很少被修改的数据   
  2 不是很重要的数据,允许出现偶尔并发的数据   
  3 不会被并发访问的数据   
  4 常量数据   
不适合存放到第二级缓存的数据?   
  1 经常被修改的数据   
  2 绝对不允许出现并发访问的数据,如财务数据,绝对不允许出现并发   
  3 与其他应用共享的数据。
搜索
Hibernate查找对象如何应用缓存?
    当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;如果都查不到,再查询数据库,把结果按照ID放入到缓存删除、更新、增加数据的时候,
同时更新缓存

Hibernate管理缓存实例
   无论何时,我们在管理Hibernate缓存(Managing the caches)时,当你给save()、update()或saveOrUpdate()方法传递一个对象时,或使用load()、 get()、list()、iterate() 或scroll()方法获得一个对象时, 该对象都将被加入到Session的内部缓存中。 当随后flush()方法被调用时,对象的状态会和数据库取得同步。 如果你不希望此同步操作发生,或者你正处理大量对象、需要对有效管理内存时,你可以调用evict() 方法,从一级缓存中去掉这些对象及其集合。
分享到:
评论

相关推荐

    hibernate 3中的缓存小结

    以及调用查询接口的list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。...

    hibernate二级缓存 SSH

    文件中是一个简单的SSH集成,带hibernate二级缓存,有点烂,但是初学者还是可以看看数据库是sqlserver,代码齐全,有sql脚本,部署到tomcat就可以跑

    Hibernate_二级缓存总结

    缓存可以简单的看成一个 Map ,通过 key 在缓存里面找 value 。 一、缓存简介 Cache In Hibernate HIBERNATE 中的 CACHE 有两级 . 一级是在 Session 范围内的 CACHE . 即每个 Session 有自己的一个 CACHE, 当前...

    Hibernate二级缓存(Ehcache)

    使用Java工程实现了Hibernate二级缓存(Ehcache),其中还有自己封装的一个jar包实现了简单的分页功能

    Hibernate二级缓存实例.rar

    简单易懂的 Hibernate二级缓存实例

    hibernate二级缓存

    完整的工程,可导入运行。测试内容为一级缓存和2级缓存。运行通过。配简单注解说明

    模拟hibernate中一级缓存

    使用一个简单的案例去模拟hibernate中的session级别(即一级缓存)的缓存,大家可以下载看看,内容很简单,但是很能说明问题

    Hibernate缓存机制解说

    Hibernate缓存机制的简单解释,可以下载去看看

    Java缓存框架Java缓存框架

    EhCache EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 主要的特性有: 1. 快速. 2. 简单. 3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量...

    struts2+hibernate的简单学生信息管理

    采用Struts2+Hibernate技术实现的简单信息管理,具有增删该查功能,添加了二级缓存,三级缓存功能,添加了日志功能,仅为初学者学习实用

    hibernate的flush()、refresh()、clear()针对一级缓存的操作的区别.docx

    首先session是有一级缓存的,目的是为了减少查询数据库的时间,提高效率,一级缓存的生命周期和session是一样的, session.flush()和session.clear()就针对session的一级缓存的处理。 简单的说, 1 session.flush()...

    HibernateDemo

    hibernate 中常用到的技术点,如hibernate的开发流程、hibernate中对象的三种状态、映射关系:一对一、一对多、多对多、组合映射、继承关系映射、组件映射、onetomanyList、一级缓存、二级缓存、查询HQL语言等。

    Ehcache分布式缓存与其在SpringBoot应用

    EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。Ehcache 是一种广泛使用的开源 Java 分布式缓存。主要面向通用缓存,Java EE 和轻量级容器。它具有内存和...

    hibernate_5.1包

    hibernate-swarmcache:支持SwarmCache,一个简单而功能强大的分布式缓存机制。它使用IP组播来有效地在缓存的实例之间进行通信。它是快速提高集群式Web应用程序的性能的理想选择。 hibernate-proxool:支持Proxool...

    Hibernate+中文文档

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     22.3 管理Hibernate的第一级缓存  22.4 管理Hibernate的第二级缓存  22.4.1 配置进程范围内的第二级缓存  22.4.2 配置集群范围内的第二级缓存  22.4.3 在应用程序中管理第二级缓存  22.4.4 Session与第二级...

    hibernate完整学习

    提供世界级数据缓存(一级缓存,二级缓存,查询缓存) 4.数据库移植性很强,很少的修改 抽取出了数据库的抽象:方言 缺点: 1.不能干预sql语句的生成 2.一个项目中,如果对sql语句的优化要求比较高,不适合用...

    hibernate3.2中文文档(chm格式)

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    HibernateAPI中文版.chm

    3.5. Hibernate缓存属性 3.6. Hibernate事务属性 3.7. 其他属性 3.8. Hibernate SQL方言 (hibernate.dialect) 3.9. Hibernate日志类别 3.10. JTA TransactionManagers 9.1. 继承映射特性(Features of ...

    Java缓存框架 Ehcache.zip

    EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 下图是 Ehcache 在应用程序中的位置: 主要的特性有: 1. 快速.2. 简单.3. 多种缓存策略4. 缓存数据有两级:...

Global site tag (gtag.js) - Google Analytics