`

WEB容器启动的时候,加载常用数据到内存

    博客分类:
  • Java
阅读更多
项目中,有很多数据是基本上不变的,同时用到的频率还比较高,如果每次都从数据库读取,不但浪费资源,还影响了系统执行的速度。

所以对于这种数据,基本上是在WEB容器启动的时候,就去数据库读取,放到内存中,用的时候直接从内存里面拿就OK了。

这里有个例子,省市的级联信息,对应的code,name都保存在数据库中的一个地区代码表中,其他表中保存的省市信息,如果没有冗余名称的话,一般都保存地区信息的对应代码。
那么在页面显示的时候,需要把相关的代码转换成省市的名称。这个时候就需要把省市的code--->name对应信息查询出来。

首先在service层配置初始化的bean:
<bean id="regionService" class="com.xxx.service.impl.RegionServiceImpl"
		init-method="initRegion" lazy-init="true"/>

再看RegionServiceImpl.java的代码:
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class RegionServiceImpl implements RegionService {

    public RegionDAO       regionDAO;
    public static Map<String,String> regionMap = new HashMap<String,String>();
    
    public void initRegion(){
    	if(regionMap.isEmpty()){
    		List<Region> regionList = regionDAO.getRegions();
    		for(Region r : regionList){
    			regionMap.put(r.getCode(),r.getName());
    		}
    	}
    }
    
    public Map<String,String> getAllRegionMap(){
    	return getRegionMap();
    }
	
    public static Map<String, String> getRegionMap() {
		return regionMap;
	}

    public static void setRegionMap(Map<String, String> regionMap) {
		RegionServiceImpl.regionMap = regionMap;
	}

}


Action里面,从service层取到regionMap,在put到前端页面jsp或者vm
Map<String,String> regionMap = regionService.getAllRegionMap();
model.addAttribute("regionMap", regionMap);


前端页面velocity:
$regionMap.get(code)
分享到:
评论

相关推荐

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

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    Spring面试题

    当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。 3.Hibernate中怎样实现类之间的...

    超级有影响力霸气的Java面试题大全文档

    当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...

    java面试题

    答:sleep()是线程类的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但监控状态依然保持,到时候会自动恢复。 wait()是Object类的方法,对此对象调用了wait方法导致本线程放弃对象锁,进入等待锁定池...

    java 面试题 总结

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector...

    flex3的cookbook书籍完整版dpf(包含目录)

    3.22 节在容器中滚动到某个指定的子组件 3.23 节使用IdeferredInstance 创建模板 3.24 节手动布局容器 3.25 节测量并改变容器尺寸 3.26 节控制子组件的可见性和布局 3.27 节用简单重组行为创建Tile 容器 3.28 节给...

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

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf 第I部分 语言结构和环境 第1章 visual studio 2010 3 ...14.3.6 panel和groupbox容器控件 559 14.3.7 扩展的provider控件 560 14.3.8 数据...

    java基础题 很全面

    42. 描述一下JVM加载class文件的原理机制? 12 43. char型变量中能不能存贮一个中文汉字?为什么? 12 44. 多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 12 45. 线程的基本概念、线程的基本状态以及...

    千方百计笔试题大全

    43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 12 45、内部类可以引用他包含类的成员吗?有...

    java面试宝典

    43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以implements(实现)interface(接口)? 12 45、内部类可以引用他包含类的成员吗?有...

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

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    Access+2000中文版高级编程

    12.4 分组的数据访问页:Web报表 380 12.4.1 创建基本页 380 12.4.2 在数据访问页中创建关系 380 12.4.3 升级分组级别 381 12.4.4 添加页眉节 382 12.4.5 在分区带显示的数据访问页中查看数据层次 383 ...

    Access 2000中文版高级编程(part1)

    12.4 分组的数据访问页:Web报表 380 12.4.1 创建基本页 380 12.4.2 在数据访问页中创建关系 380 12.4.3 升级分组级别 381 12.4.4 添加页眉节 382 12.4.5 在分区带显示的数据访问页中查看数据层次 383 12.4.6 ...

    vc++ 应用源码包_1

    自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、...

    vc++ 应用源码包_2

    自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、...

    vc++ 应用源码包_6

    自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、...

    vc++ 应用源码包_5

    自定义了一个类似STL容器的类,并进行了测试。 ClearHistory 实现了 清楚internet临时文件、Cookie的清除、游览器地址栏历史地址的清除、清楚表单自动完成历史记录、清楚自动密码历史记录、清除收藏夹中的内容、...

Global site tag (gtag.js) - Google Analytics