`
whp0731
  • 浏览: 174872 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring小结之配置二级缓存!

阅读更多

一、spring二级缓存主要分为三步,可以参考附件程序理解:

1、在spring的bean.xml中添加以下三行代码hibernate.cache.use_second_level_cache=true
               hibernate.cache.use_query_cache=false
            hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
	 <context:annotation-config/>
	 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
	    <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/>
	    <property name="url" value="jdbc:mysql://localhost:3306/itcast?useUnicode=true&amp;characterEncoding=UTF-8"/>
	    <property name="username" value="root"/>
	    <property name="password" value="symbio"/>
	     <!-- 连接池启动时的初始值 -->
		 <property name="initialSize" value="1"/>
		 <!-- 连接池的最大值 -->
		 <property name="maxActive" value="500"/>
		 <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->
		 <property name="maxIdle" value="2"/>
		 <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->
		 <property name="minIdle" value="1"/>
	  </bean>
	  
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
	     <property name="dataSource" ref="dataSource"/>
		 <property name="mappingResources">
		    <list>
		      <value>cn/itcast/bean/Person.hbm.xml</value>
		    </list>
		 </property>
	     <property name="hibernateProperties">
		    <value>
		        hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
		        hibernate.hbm2ddl.auto=update
		        hibernate.show_sql=false
		        hibernate.format_sql=false
		        hibernate.cache.use_second_level_cache=true
       	        hibernate.cache.use_query_cache=false
        	    hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
		      </value>
	     </property>
	</bean>
	<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
	  	<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
	<tx:annotation-driven transaction-manager="txManager"/>
	<bean id="personService" class="cn.itcast.service.impl.PersonServiceBean"/>
	
	<bean name="/person/list" class="cn.itcast.web.action.PersonAction"/>
	<bean name="/person/manage" class="cn.itcast.web.action.PersonManageAction"/>
</beans>

2、新建二级缓存配置文件ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
    defaultCache节点为缺省的缓存策略
     maxElementsInMemory 内存中最大允许存在的对象数量
     eternal 设置缓存中的对象是否永远不过期
     overflowToDisk 把溢出的对象存放到硬盘上
     timeToIdleSeconds 指定缓存对象空闲多长时间就过期,过期的对象会被清除掉
     timeToLiveSeconds 指定缓存对象总的存活时间
     diskPersistent 当jvm结束是是否持久化对象
     diskExpiryThreadIntervalSeconds 指定专门用于清除过期对象的监听线程的轮询时间
 -->
<ehcache>
    <diskStore path="D:\cache"/>
    <defaultCache  maxElementsInMemory="1000" eternal="false" overflowToDisk="true"
        timeToIdleSeconds="120"
        timeToLiveSeconds="180"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="60"/>
	<cache name="cn.itcast.bean.Person" maxElementsInMemory="100" eternal="false"
    overflowToDisk="true" timeToIdleSeconds="300" timeToLiveSeconds="600" diskPersistent="false"/>
</ehcache>

 

3、在需要缓存的相应的实体对象映射文件上加上:<cache usage="read-write" region="cn.itcast.bean.Person"/>

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.itcast.bean">
    <class name="Person" table="person">
    	<cache usage="read-write" region="cn.itcast.bean.Person"/>
        <id name="id">
            <generator class="native"/>
        </id>
        <property name="name" length="10" not-null="true"/>
    </class>
</hibernate-mapping>

 

 

备注:附件中为准确的项目,但是因上传文件大小受限制,所以去掉了lib下的所有jar包。

  • SSH.rar (19.5 KB)
  • 下载次数: 49
分享到:
评论

相关推荐

    java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

    Java Web 现代化开发:Spring Boot + Mybatis + Redis 二级缓存 本篇博客将介绍如何使用 Spring Boot 快速搭建一个 Web 应用,并且采用 Mybatis 作为我们的 ORM 框架。为了提升性能,我们将 Redis 作为 Mybatis 的...

    Spring in Action(第二版 中文高清版).part2

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结

    Spring in Action(第二版 中文高清版).part1

    第一部分 Spring的核心 第1章 开始Spring之旅 1.1 Spring是什么 1.2 开始Spring之旅 1.3 理解依赖注入 1.3.1 依赖注入 1.3.2 DI应用 1.3.3 企业级应用中的依赖注入 1.4 应用AOP ...B.4 小结

    Struts2+Hibernate+Spring项目小结――Hibernate部分

    - `@Cache(usage=CacheConcurrencyStrategy.READ_WRITE)`:启用二级缓存,并设置缓存策略为读写模式。 - `@SequenceGenerator`:定义序列生成器,用于自动生成主键值。 此外,还需要引入相关的包,例如`javax....

    Spring in Action(第2版)中文版

    目录 第一部分spring的核心 第1章开始spring之旅 1.1spring是什么 1.2开始spring之旅 1.3理解依赖注入 ...1.3.3企业级应用中的依赖注入 ...1.5小结 ...2.6小结 ...3.3注入非springbean ...3.5使用spring的特殊bean ...b.4小结

    Spring.3.x企业应用开发实战(完整版).part2

    17.4.5 使用Hibernate二级缓存 17.5 对持久层进行测试 17.5.1 配置Unitils测试环境 17.5.2 准备测试数据库及测试数据 17.5.3 编写DAO测试基类 17.5.4 编写BoardDao测试用例 17.6 服务层开发 17.6.1 UserService的...

    Spring配置总结

    OpenSessionInView是一种技术,用于解决Hibernate在多线程环境下的一级缓存问题。通过在web.xml中配置`OpenSessionInViewFilter`,可以实现持久化层的事务与视图渲染的无缝结合,提高应用性能。 ##### 2. **Struts...

    Spring3.x企业应用开发实战(完整版) part1

    17.4.5 使用Hibernate二级缓存 17.5 对持久层进行测试 17.5.1 配置Unitils测试环境 17.5.2 准备测试数据库及测试数据 17.5.3 编写DAO测试基类 17.5.4 编写BoardDao测试用例 17.6 服务层开发 17.6.1 UserService的...

    SpringBoot redis分布式缓存实现过程解析

    当应用系统需要查询缓存的时候,先从一级缓存里查找,如果有,则返回,如果没有查找到,则再查询二级缓存。 小结 本文主要介绍了SpringBoot Redis分布式缓存实现过程解析,通过示例代码详细介绍了分布式缓存的实现...

    小结plus、Redis的配置,基础包

    Mybatis缓存分为一级缓存和二级缓存,它们有助于提高查询效率。Mybatis插件是Mybatis的扩展点,允许开发者在执行SQL前后等环节进行拦截和自定义处理。 6. Mybatis高级特性:Mybatis与Spring的集成是目前常见的实践...

    ibatis小结

    二级缓存是可选的,跨越多个`SqlSession`,但需要在Mapper XML中开启并配置。 ### 六、Ibatis与ORM框架对比 相比于Hibernate等全对象关系映射框架,Ibatis更轻量,控制权更大,开发者可以自由地编写SQL,但同时也...

    mybatis学习文档资料

    - **7.6 二级缓存局限性**:讨论二级缓存可能存在的问题,如并发更新问题等。 #### 六、Spring 和 MyBatis 整合 - **8.1 整合思路**:利用Spring管理MyBatis的生命周期,简化开发流程。 - **8.2 整合环境**:搭建...

    Java Web程序设计教程

    10.2.3应用二级缓存 214 10.2.4应用第三方缓存 216 10.3项目实战——借还图书 217 本章小结 224 课后练习 224 第11章spring框架基础 226 11.1spring框架概述 226 11.1.1认识spring框架 226 11.1.2spring框架...

    Spring-data-jpa 学习笔记.docx

    3. **易于集成**:可以轻松地与其他 Spring 组件集成,如事务管理和缓存策略等。 为了使用 Spring Data JPA,开发者需要遵循一定的命名规则来定义持久层接口中的方法。Spring Data JPA 会根据这些命名规则自动生成...

    Grails 技术精解与Web开发实践【源码+样章】----下载不扣分,回帖加1分,欢迎下载,童叟无欺

    11.4.2 使用二级缓存 147 11.5 使用GRAG工具生成Domain 151 11.6 本章小结 154 第12章 与Spring整合 155 12.1 依赖注入与Spring容器基础 155 12.1.1 依赖注入 155 12.1.2 Spring容器基础 157 12.2 在Grails中使用...

    开源项目研究与应用小结.pdf

    《开源项目研究与应用小结》这一文档提供了关于高并发敏捷WEB架构、消息队列/总线服务、大规模数据存储及数据缓存等方面的研究与应用总结。下面将根据文档的内容,详细阐述这些关键技术领域中的开源项目及其优缺点。...

    Struts2+Spring2+Hibernate3 web应用示例

    #### 六、小结 整合Struts2、Spring2与Hibernate3不仅提高了开发效率,也使得Web应用更加稳定和易于维护。通过以上步骤,可以快速搭建起一个具备基本CRUD功能的图书管理系统。这种集成方式对于初学者来说是非常有...

    mybatis学习笔记

    - **开启二级缓存**:配置文件中的设置。 - **实现序列化**:满足二级缓存的要求。 - **测试**:验证缓存的有效性。 - **禁用二级缓存**:特定情况下的关闭方法。 - **刷新缓存**:清理缓存数据。 - **Mybatis...

    web开发框架总结

    它的缓存机制和第二级缓存可以提高性能,而透明的事务管理和持久化状态管理则降低了复杂性。 Spring框架是Java企业级应用的基石,它是一个全面的后端解决方案,包含依赖注入、AOP(面向切面编程)、数据库事务管理...

Global site tag (gtag.js) - Google Analytics