Spring Data Jpa缓存介绍

一级缓存:

会话session、事务级别的,事务退出,缓存就失效了。以id为标识

实体管理器-数据源 操作数据拷贝而非数据源。

二级缓存:

线程级或集群级,以id为标识放到缓存(针对id)

过程:一级缓存、二级缓存(进程级、可配置和修改)-数据源

多个线程访问二级缓存,需要采取事务控制

桥接第三方缓存,hibernate二级缓存的实现:

1.ehcache

2.OScache

3.JBossCache

4.Memcached

......

什么样的数据适合二级缓存呢?

1.很少被修改的数据

2.不是很重要,允许偶尔出现并发的数据

3.不会被高并发访问的数据

4.参数数据,通常是数量有限,极少被修改,大量的被其它实例引用的

不适合使用二级缓存?

1.经常被修改的数据,代价太大,得不偿失

2.金钱敏感的数据,绝对不允许出现并发

3.与其他应用共享的数据

查询缓存:

批量的缓存、批量的获取,如按查询条件、查询结果进行缓存;

JPA+Ehcache缓存配置:

1.加入Ehcache依赖

<!--Ehcache-core 包 -->
<dependency>
      <groupId>net.sf.ehcache</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>2.6.9</version>
</dependency>

 <!--添加Hibernate-Ehcache包 -->
<dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-ehcache</artifactId>
      <version>${hibernate-version}</version>
</dependency>

2.配置ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">

    <diskStore path="java.io.tmpdir/ehcache"/>

    <!-- 默认缓存 -->
    <defaultCache
            maxElementsInMemory="1000"  <!-- 默认缓存中存最多数据项目 -->
            eternal="false" <!--是否永不过期-->
            timeToIdleSeconds="120" <!--空闲多长时间后从缓存中删除-->
            timeToLiveSeconds="120" <!--活跃多长时间后从缓存中删除-->
            overflowToDisk="false"/><!--超过maxElementsInMemory之后是否存储到硬盘-->

    <!-- 题目缓存-->
    <cache name="questionCache"
           maxElementsInMemory="1000"
           eternal="true"
           timeToIdleSeconds="120"
           timeToLiveSeconds="120"
           overflowToDisk="false"
           memoryStoreEvictionPolicy="LRU" <!--数据项失效策略-->
   />
</ehcache>

3.persistence.xml配置加入缓存配置

<prop key="hibernate.cache.use_query_cache">true</prop> <!--开启查询缓存-->
<property name="hibernate.cache.use_second_level_cache">true</property><!--开启二级缓存-->
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>  <!--ehcache支持-->
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property><!--ehcache支持-->
<property name="hibernate.cache.provider_configuration">classpath:ehcache.xml</property><!--ehcache详细配置-->

4.注解配置

未完待续...

时间: 2024-10-12 22:02:59

Spring Data Jpa缓存介绍的相关文章

spring data jpa基本介绍

jpa是将java对象持久化到关系型数据库的标准方式,spring data jpa作为spring data项目在关系型数据库数据访问层的解决方案,为简化jpa存储提供了良好的支持. 有关jpa的文章网上实在是太多太多,以下几篇写的比较不错,几乎涵盖了书中所有要讲的东西,也不copy来copy去的了,免得真正需要的人又搜出一大堆废话. jpa学习笔记:http://www.blogjava.net/luyongfa/archive/2012/11/01/390572.html spring d

Spring Boot2 系列教程 (七) | 使用 Spring Data JPA 访问 Mysql

前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spring Data JPA 之前,首先介绍 Hibernate . Hibernate 使用 O/R 映射 (Object-Relation Mapping) 技术实现数据访问, O/R 映射即将领域模型类与数据库的表进行映射,通过程序操作对象而实现表数据操作的能力,让数据访问操作无需关注数据库相关技术. Hibernate 主导了 EJB 3.0 的 JPA 规范, JPA 即

Spring Data JPA开发手册——1.介绍

<Spring Data JPA开发手册--1.介绍> 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 我发现网上几乎没有讲述Spring Data JPA原理的文章,很多Guide一上来就是如何配置,接着就是几大段代码,没有一篇文章能把Spring Data JPA原理及构成说清楚的.所以,我写了这个系列的文章. 用Java Persistence API库创建持久层是很繁琐的,也很耗时,而且需要大量的样板代码.我们可以通过以下步骤消除一些样板代

Spring Data JPA 介绍

Spring Data是SpringSource基金会下的一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得数据库的访问变得方便快捷,并支持map-reduce框架和云计算数据服务.对于拥有海量数据的项目,可以用Spring Data来简化项目的开发. 然而针对不同的数据储存访问使用相对的类库来操作访问.Spring Data中已经为我们提供了很多业务中常用的一些接口和实现类来帮我们快速构建项目,比如分页.排序.DAO一些常用的操作. 核心模块 为什么说Spring Data能帮助

Spring Data JPA 1.10.1 详解二之快速Demo

一.maven配置文件加入依赖 Spring Data JPA 依赖,最新稳定的版本为1.10.1.RELEASE,这里需要说明下的是,其依然依赖hibernate JPA相关JAR,hibernate-core之类的是不需要的.hibernate是JPA规范的一种实现,所以需要加入其依赖.ehcache是hibernate二级缓存的配置,不是必须的. <dependency>         <groupId>org.springframework.data</groupI

spring data jpa 的简单使用

先说简单一下JPA 概念:JPA(Java Persistence API)是Sun官方提出的Java持久化规范.它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据. 影响:他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面 进入正题 Spring DATA JPA 1.概念:它是基于ORM框架.JPA规范封装的一套JPA应用框架可使开发者用极简的代码即可实现对数据的访问和操作,它提

Spring Data JPA实战视频教程

视频大纲 JPA入门 Spring Data JPA入门 Repository的定义 查询方法的命名策略 JPQL查询,结果映射 Named Query,Named Native Query 排序,分页 JPA Criteria查询 Querydsl查询 Query by Example 一对一,一对多,多对一,多对多 @EnableJpaRepositories 注解 自定义.扩展Repository 实体的生命周期 审计 乐观锁,悲观锁 集成 OpenJPA 查询批注 缓存 事务 Sprin

Spring Data JPA进阶——Specifications和Querydsl

Spring Data JPA进阶--Specifications和Querydsl 本篇介绍一下Spring Data JPA中能为数据访问程序的开发带来更多便利的特性,我们知道,Spring Data repository的配置很简单,一个典型的repository像下面这样: public interface CustomerRepository extends JpaRepository<Customer, Long> { Customer findByEmailAddress(Str

Spring Data JPA例子[基于Spring Boot、Mysql]

关于Spring Data Spring社区的一个顶级工程,主要用于简化数据(关系型&非关系型)访问,如果我们使用Spring Data来开发程序的话,那么可以省去很多低级别的数据访问操作,如编写数据查询语句.DAO类等,我们仅需要编写一些抽象接口并定义相关操作即可,Spring会在运行期间的时候创建代理实例来实现我们接口中定义的操作. 关于Spring Data子项目 Spring Data拥有很多子项目,除了Spring Data Jpa外,还有如下子项目. Spring Data Comm