`

j2ee缓存——小了解

阅读更多

个人认为适宜在不经常修改的大批量读取数据库数据时应用。


仅以我读取一个区域内容的情况为例:


(1)在service类中实例化静态HashMap
    private static HashMap<Long,String> areaNamehash =new HashMap<Long,String>();
(2)在service类中创建其setter方法
    public static void setAreaNamehash(HashMap<Long, String> areaNamehash)
    {
        AreaService.areaNamehash = areaNamehash;
    }
(3)在service类中创建action可使用的方法(如果缓存中已有值则应用缓存中值,如没有则通过DAO从数据库中取出)
    public String getAreaName(int compId, long areaId)
    {
        String areaName = areaNamehash.get(areaId);
        if(areaName == null || "".equals(areaName))
        {
            List<Areas> areas = dao.getAllAreaByComId(compId);
            for (Areas ar : areas) {
              long id = ar.getAreasid();
              String name = ar.getAreaname();
              areaNamehash.put(id, name);
            }
            areaName = areaNamehash.get(areaId);
        }
        return areaName;
    }
(4)在service类中创建destroy方法,用来释放缓存
    public void destroy()
    {
        areaNamehash.clear();
    }


(5)创建随服务器启动的servlet类
<servlet>
   <deion>load all cache</deion>
   <servlet-name>loadCache</servlet-name>
   <servlet-class>com.wiwj.util.cache.DoLoadCache</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
(6)实例化主体LoadCache类,运行其加载缓存的方法,方法具体模式如下:
a、实例化缓存的HashMap
    HashMap<Long, String> areahash = new HashMap<Long, String>();
b、用方法将数据库中取出的信息通过DAO装入HashMap中
      this.loadAreaCache(compId, areahash);
        //方法如下
          private void loadAreaCache(int compId, HashMap<Long, String> hash) {
            AreaDAO dao = new AreaDAO();
            List<Areas> areas = dao.getAllAreaByComId(compId);
            for (Areas ar : areas) {
              long id = ar.getAreasid();
              String name = ar.getAreaname();
              hash.put(id, name);
            }
          }
c、用service类中的setter方法将上面的HashMap装入service类中的静态HashMap中
    AreaService.setAreaNamehash(areahash);
(7)在LoadCache类中创建destroy方法,调用service类中的destroy方法,释放缓存
public void destroy() {
    AreaService.getInstance().destroy();
}
(8)在servlet类中调用LoadCache类中的destroy方法,释放内存

 

分享到:
评论

相关推荐

    构建高性能J2EE应用的技巧

    在构建J2EE应用时,架构工程师通常会使用到J2EE的基本部分——Servlet。如果架构师不使用Session Beans, Entity Beans, 或 Message Beans, 那么改进性能的方法就很少。只能采用增加CPU或更多的物理服务器等方法。EJB...

    论文研究-基于J2EE的资源池数据访问模式在电子政务中的应用研究.pdf

    重点介绍了资源池模式的数据访问的两种方式,即连接池和语句缓存,给出它们在一个J2EE电子政务门户系统中的实现,并使用J2EE性能测试工具——Grinder对系统采用资源池模式数据访问设计前后的系统性能进行了对比测试...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    这是个小型的系统,从投入的人力,财力与物力来讲是非常小的,发布出去之需要注册域名就可以了,从节省人力方面,可以让管理人员从繁与复杂的工作中解脱出来,做更多的工作。 2.2.3. 管理可行性 有IP地址、用户名...

    thinker:自制j2ee快速开发框架,mystyle2.0升级版

    工作中的积累,搭建的j2ee应用快速开发手架,重点在代码重构,一些常用功能的演示,工具,插件等的整理。ps:(参考,,) springmvc、spring、hibernate为基础框架 mysql数据库 前端使用基于bootstrap的metronic组件库...

    finance-master汇尚电子商务商品管理系统.zip

    提供了常用的系统功能,内置1000多个小图标,可自定义上传和带缓存的数据字典。 f.?为了提高UI开发效率,内置一套常用的UI标签,包含了分页标签、查询标签、数据字典标签。 g.?提供了超级用户的功能(id=1的用户自动...

    使用SPRINGAOP框架和EJB组件

    Spring托管的组件(POJO)可以与EJB共存,并允许使用AOP方法来处理企业应用程序中的横切方面——从监控和审计、缓存及应用程序级的安全性开始,直到处理特定于应用程序的业务需求。本文将向您介绍Spring的AOP框架在...

    Aooms:[ Aooms —— 极速微服务开发平台 ] 不止于简单的框架集成(组件轻薄封装、极速开发体验、完整解决方案)

    Aooms —— 极速微服务开发平台 简介 Aooms是基于SpringCloud生态的微服务开发平台,不止于简单的框架集成。 组件轻薄封装 极速开发体验 完整解决方案 [ Aooms-在线体验 ] ) 工程结构 - aooms-core 框架核心包,其他...

    asp.net知识库

    我对J2EE和.NET的一点理解 难分难舍的DSO(一) InternalsVisibleToAttribute,友元程序集访问属性 Essential .NET 读书笔记 [第一部分] NET FrameWork的Collections支持 .NET的反射在软件设计上的应用 关于跨程序集...

    designpattern:设计模式

    来源于配置文件——需要静态配置,J2EE的spring中常配置XML 来源于运行时的某个值,如缓存或DB 如果多态从配置文件中读入,如下: public static Api createApi() { // 从配置文件读入 Properties p = new Pro

    很炫的对话框

    它的消息容器甚至能够根据宽度让文本居中或居左对齐——这一切全是XHTML+CSS原生实现。 完善的接口 它的接口完善,可以轻易与外部程序配合使用。如异步写入消息、控制位置、尺寸、显示与隐藏、关闭等。 细致的体验 ...

    JAVA上百实例源码以及开源项目源代码

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    夏昕.深入浅出Hibernate

    本书从持久层入手,引出对象/关系数据库映射的由来,接下来聚焦于目前最完善、最强悍的ORM产品—— Hibernate。从一个基础程序入手,讲述Hibernate的基本语法与配置,慢慢升高到缓存、延迟加载等高级特性。本书内容...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Viewport不局限于浏览器可视区域的大小,可能比浏览器的可视区域要大,也可能比浏览器的可视区域要小。 媒体查询 CSS媒体查询允许开发者基于浏览网站的设备的特性来应用不同的样式申明,最常用的特性是视口宽度。 ...

    JAVA上百实例源码以及开源项目

     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...

    支持多数据库的ORM框架ef-orm.zip

    同时每个查询都可以针对batch、fetchSize、maxResult、缓存、级联操作类型等进行调整和开关,可以将性能调到最优。可在主流数据库之间任意切换 支持Oracle、MySQL、Postgres、MSSQL、GBase、SQLite、HSQL、Derby等...

Global site tag (gtag.js) - Google Analytics