基于 Hibernate缓存的Ehcache让实体对象集合对象缓存

考虑到效率和对数据库的压力,使用缓存或者内存缓存,可以提高反应速度和减轻数据库压力。hibernate中支持的比较多,在hibernate给的文档“提升性能”章节有详细介绍:

hibernate支持缓存类型和介绍:

后面三个还支持集群,比较强大。

现在详细介绍Ehcache使用:

Ehcache所需要的jar包(配合hibernate使用):

加入配置文件:

<ehcache>

    <!-- Sets the path to the directory where cache .data files are created.

         If the path is a Java System Property it is replaced by
         its value in the running VM.

         The following properties are translated:
         user.home - User's home directory
         user.dir - User's current working directory
         java.io.tmpdir - Default temp file path -->
    <diskStore path="java.io.tmpdir"/>

    <!--Default Cache configuration. These will applied to caches programmatically created through
        the CacheManager.

        The following attributes are required for defaultCache:

        maxInMemory       - Sets the maximum number of objects that will be created in memory
        eternal           - Sets whether elements are eternal. If eternal,  timeouts are ignored and the element
                            is never expired.
        timeToIdleSeconds - Sets the time to idle for an element before it expires. Is only used
                            if the element is not eternal. Idle time is now - last accessed time
        timeToLiveSeconds - Sets the time to live for an element before it expires. Is only used
                            if the element is not eternal. TTL is now - creation time
        overflowToDisk    - Sets whether elements can overflow to disk when the in-memory cache
                            has reached the maxInMemory limit.

        -->
    <defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        overflowToDisk="true"
        />

</ehcache>

 

hibernate配置:

如果Query要缓存要手动设置的:

如果某个类有集合字段,我们也想要集合字段缓存,我们需要对那个字段设置缓存属性:

这种设置对于多级菜单很是有效的!

第一次(没的使用缓存的)效果:

第二次(缓存)效果:

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, hibernate
, 对象
, 缓存
, 集群
配置
ehcache 缓存list集合、ehcache 缓存map集合、hibernate 集合缓存、hibernate ehcache、hibernate5 ehcache,以便于您获取更多的相关知识。

时间: 2024-08-01 01:30:39

基于 Hibernate缓存的Ehcache让实体对象集合对象缓存的相关文章

hibernate-Hibernate 多对多 查询得到的关联集合对象为空

问题描述 Hibernate 多对多 查询得到的关联集合对象为空 org.springframework.dao.DataIntegrityViolationException: could not insert collection rows: [org.model.Xsb.kcs#081101 ]; nested exception is org.hibernate.exception.ConstraintViolationException: could not insert collec

Hibernate缓存和ehcache

缓存的概念          计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能.缓存中的数据是存储源总的数据的拷贝.缓存的物理介质通常是内存.   Hibernate中提供了两个级别的缓存          Session级别的缓存          它是属于事务范围的缓存.这一级别的缓存有Hibernate管理的,一般情况下午需进行干预.          SessionFac

缓存之EHCache(转)

一.简介非常简单,而且易用. ehcache 是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,而且是hibernate 默认的缓存provider.ehcache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.ehcache可以直接使用.也可以和Hibernate对象/关系框架结合使用.还可以做Servlet缓存.Cache 存储方式 :内存或磁盘.官方网站:http://ehcache.sourceforge.net

mybatis缓存和hibernate缓存的理解问题和区别。类缓存和查询缓存的理解和区别

问题描述 mybatis缓存和hibernate缓存的理解问题和区别.类缓存和查询缓存的理解和区别 Hibernate的一级缓存的目的是为了方便管理实体类的状态(临时状态.持久化状态.游离状态.删除状态).Hibernate的目的二级缓存是为了减少sql语句.那么mybatis的一级缓存和二级缓存的目的是为了什么? Hibernate的二级缓存通常使用ehcache,通常配置的是实体类,所以ehcache里面配置实体类是属于类缓存吗? 类缓存到底在什么地方优化?怎样减少sql语句? 查询缓存到底

Java的进程内缓存框架:EhCache (转)

EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache缓存的特点: 1. 快速. 2. 简单. 3. 多种缓存策略 4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题 5. 缓存数据会在虚拟机重启的过程中写入磁盘 6. 可以通过RMI.可插入API等方式进行分布式缓存 7. 具有缓存和缓存管理器的侦听接口 8. 支持多缓存管理器实例,以及一个实例的多个缓存区域 9. 提供Hibernate的缓存实现  

针对SaaS应用程序的基于Hibernate框架的数据库分片

针对 SaaS 应用程序的基于 Hibernate 框架的数据库分片 SaaS 正在改变设计.构建.部署和操作应用程序的方式.开发一个 SaaS 应用程序与开发一个通用企业应用程序之间的关键区别在于,SaaS 应用程序必须是多租户的.其他关键 SaaS 需求,比如安全性.定制.面向服务的架构(SOA)和集成,也影响 SaaS 应用程序架构. 多租户是指应用程序在单一代码库内寄存多个承租者并共享数据库等架构的能力.有多种设计选项可启用多租户数据架构 - 每个承租者的专用数据库.每个承租者的共享数据

基于Hibernate和Struts的J2EE应用开发

引言 随着Java技术的逐渐成熟与完善,作为建立企业级应用的标准平台,J2EE平台得到了长足的发展.借助于J2EE规范中包含的多项技术:Enterprise JavaBean(EJB).Java Servlets(Servlet).Java Server Pages(JSP).Java Message Service(JMS)等,开发出了许多应用系统.但是,在传统J2EE应用的开发过程中也出现了一些问题:1)数据模型和逻辑模型之间的矛盾.目前使用的数据库基本上都是关系型数据库,而Java本质上是

Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)

很久没有写博客了,一些读者也经常问问一些问题,不过最近我确实也很忙,除了处理日常工作外,平常主要的时间也花在了继续研究微软的实体框架(EntityFramework)方面了.这个实体框架加入了很多特性(例如LINQ等),目前也已经应用的比较成熟了,之所以一直没有整理成一个符合自己开发模式的实体框架,是因为这个框架和原来我的基于EnterpriseLibrary的模式还是有很大的不同,不过实体框架推出来也很久了,目前也去到了EntityFramework6了,听说7也快出来了. 随着我自己参考阅读

聚合(根)、实体、值对象精炼思考总结

1.      聚合根.实体.值对象的区别? 从标识的角度: 聚合根具有全局的唯一标识,而实体只有在聚合内部有唯一的本地标识,值对象没有唯一标识,不存在这个值对象或那个值对象的说法: 从是否只读的角度: 聚合根除了唯一标识外,其他所有状态信息都理论上可变:实体是可变的:值对象是只读的: 从生命周期的角度: 聚合根有独立的生命周期,实体的生命周期从属于其所属的聚合,实体完全由其所属的聚合根负责管理维护:值对象无生命周期可言,因为只是一个值: 2.      聚合根.实体.值对象对象之间如何建立关联