实体要序列化

resource文件夹下建立 ehcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
  <diskStore path="java.io.tempdir" />
  <defaultCache maxElementsInMemory="1000" eternal="false"
    timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
  <cache name="ehcacheGO" maxElementsInMemory="10000"
    eternal="false" timeToIdleSeconds="300000" timeToLiveSeconds="600000"
    overflowToDisk="true" />
</ehcache>

建立ehcache的工具类

package com.cjt.utils;

import java.net.URL;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class EhcacheUtil {

  private static final String path = "/ehcache.xml";

  private URL url;

  private CacheManager manager;

  private static EhcacheUtil ehCache;

  private EhcacheUtil(String path) {
    url = getClass().getResource(path);
    manager = CacheManager.create(url);
  }

  public static EhcacheUtil getInstance() {
    if (ehCache== null) {
    ehCache= new EhcacheUtil(path);
   }
    return ehCache;
  }

  public void put(String cacheName, String key, Object value) {
    Cache cache = manager.getCache(cacheName);
    Element element = new Element(key, value);
    cache.put(element);
  }

  public Object get(String cacheName, String key) {
    Cache cache = manager.getCache(cacheName);
    Element element = cache.get(key);
    return element == null ? null : element.getObjectValue();
  }

  public Cache get(String cacheName) {
    return manager.getCache(cacheName);
  }

  public void remove(String cacheName, String key) {
    Cache cache = manager.getCache(cacheName);
    cache.remove(key);
   }

 }

===================================================

使用ehcache

 @RequestMapping("/showUser")
 public String toIndex(HttpServletRequest request, Model model) {
  System.out.println("UserController showUser");
  int id = Integer.parseInt(request.getParameter("id"));
  User user = userService.getUserById(id);

  //将查询到的结果放入缓存
  EhcacheUtil.getInstance().put("ehcacheGO", "userEch", user);
  model.addAttribute("user", user);
  return "showUser";
 }

 @RequestMapping("/getUser")
 public String toEhcahe(HttpServletRequest request, Model model) {
  System.out.println("use cacher");

//从缓存中取数据
  User user=(User)EhcacheUtil.getInstance().get("ehcacheGO", "userEch");
  model.addAttribute("userCache", EhcacheUtil.getInstance().get("ehcacheGO", "userEch"));
  model.addAttribute("user", user);
  return "showUser";
  }

上面showUser时发送了sql语句,下面getUser时没有发送sql语句说明直接从缓存中取的数据

java 缓存ehcache的使用(使用方式一)的更多相关文章

  1. JAVA 缓存Ehcache详细解毒

    链接地址:http://raychase.iteye.com/blog/1545906 作者:RayChase 写的真是太好了,郑重推荐.

  2. JAVA缓存技术之EhCache

    最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...

  3. JAVA缓存技术之EhCache(转)

    最近再ITEYE上看到关于讨论JAVA缓存技术的帖子比较多,自己不懂,所以上网大概搜了下,找到一篇,暂作保存,后面如果有用到可以参考.此为转贴,帖子来处:http://cogipard.info/ar ...

  4. ehcache整合spring注解方式

    一.简介 在hibernate中就是用到了ehcache 充当缓存.spring对ehcache也提供了支持,使用也比较简单,只需在spring的配置文件中将ehcache的ehcache.xml文件 ...

  5. Java 缓存技术

    以下仅是对map对方式讨论.没有对点阵图阵讨论.作缓存要做以下2点:  1:清理及更新缓存时机的处理: . 虚拟机内存不足,清理缓存 .. 缓存时间超时,或访问次数超出, 启动线程更新 2:类和方法的 ...

  6. Java缓存

    Java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下: 要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定 ...

  7. Java缓存相关memcached、redis、guava、Spring Cache的使用

    随笔分类 - Java缓存相关 主要记录memcached.redis.guava.Spring Cache的使用 第十二章 redis-cluster搭建(redis-3.2.5) 摘要: redi ...

  8. 浅谈java缓存

    java中要用到缓存的地方很多,首当其冲的就是持久层缓存,针对持久层谈一下: 要实现java缓存有很多种方式,最简单的无非就是static HashMap,这个显然是基于内存缓存,一个map就可以搞定 ...

  9. Java缓存机制

    1 Java缓存 1.1 jvm内置缓存 Java中实现缓存的方式有很多,比如用static hashMap基于内存缓存的jvm内置缓存,简单不实用,保对象的有效性和周期无法控制,容易造成内存急剧上升 ...

随机推荐

  1. [转]Disabling ASLR on individual iOS applications when using iOS 6.0.1

    ASLR: Address Space Layout Randomization 查看应用是否进行了 ASLR 保护的方法:otool -hv ${File-Path} I recently enco ...

  2. KVC和KVO实现监听容器类(数组等)的变化

    KVC,即Key-Value Coding,键值编码,简单地说,就是可以由key获取一个object对应的property.举个例子,如果一个对象object,它有一个属性item,你可以通过valu ...

  3. selenium webdriver (python)2

    selenium webdriver (python) 第二版 前言  对于大多软件测试人员来讲缺乏编程经验(指项目开发经验,大学的C 语言算很基础的编程知识)一直是难以逾越的鸿沟,并不是说测试比开发 ...

  4. 兼容ie6的图片垂直居中

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 什么是DCI

    目录 备注什么是DCI?如何将Role注入到Data中?开发期注入字节码增强MixinTraitTemplateT4 + 部分类 + 显式接口实现 + 扩展类型,C#专用运行期注入Mixin动态代理为 ...

  6. zookeeper学习(上)

    zookeeper学习(上) 在前面的文章里我多次提到zookeeper对于分布式系统开发的重要性,因此对zookeeper的学习是非常必要的.本篇博文主要是讲解zookeeper的安装和zookee ...

  7. asp.net缓存(转载)

    由于工作的需要,最近对.net缓存做了相关了解和学习.做以下分类: 客户端缓存 第三方的缓存 服务器缓存 客户端缓存 客户端缓存主要是指浏览器帮我们缓存一些页面组件包括脚本,样式,图片等等,由于客户端 ...

  8. Http Module 介绍(转载)

    Http Module 介绍 引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了Http请求在服务器端的处理流程,随后我们知道Http请求最终会由实现了IH ...

  9. SQL Server 如何读写数据

    01. SQL Server 如何读写数据   一. 数据读写流程简要SQL Server作为一个关系型数据库,自然也维持了事务的ACID特性,数据库的读写冲突由事务隔离级别控制.无论有没有显示开启事 ...

  10. C#代码搜索器

    WEBUS2.0 In Action - [源代码] - C#代码搜索器 最近由于工作的需要, 要分析大量C#代码, 在数万个cs文件中搜索特定关键词. 这是一项非常耗时的工作, 用Notepad++ ...