应该有不少朋友遇到这样的问题,就是有一些简单的代码-名称数据,例如:
<option value = "12">天津市</option> 
<option value = "13">河北省</option> 
<option value = "14">山西省</option> 
<option value = "15">内蒙古自治区</option> 
<option value = "21">辽宁省</option> 
系统一般处理和记录的是代码,也不希望在要用到其对应的名称时到数据库中去查询,希望预先将这些数据加载到内存,用到时直接调用其数据就可以了,如果一个系统中有不少这样的数据,例如地区数据,行业数据,请问大家有什么好的方案来进行预先加载,以及调用?对了,在不使用任何持久框架的情况下。

解决方案 »

  1.   

    在第一次把这些读到内存里,以后再取得时候,进行判断内存里是否有,如果有,就不用去取了
    可以放到application里,这样就都能共享了。
      

  2.   

    <servlet>
            <servlet-name>MyInitServlet</servlet-name>
            <servlet-class>my.MyInitServlet</servlet-class>
            <load-on-startup>2</load-on-startup>
    </servlet>public class MyInitServlet extends HttpServlet {
        
        private static final long serialVersionUID = 1L;
        
        public void init() throws ServletException {
            super.init();        
            ServletContext ctx = this.getServletContext();
            Map map = oneObiect.doSomething()
            ctx.setAttribute("something_map",map);
        }
    }in page:<% Map map = (Map)application.getAttribute("something_map");  %>
      

  3.   

    有很多方法的,最简单的就是用一个servlet,让它随Web应用启动而启动,在这个servlet中把这些数据放到一个常量类中我们之前的项目中采用了apache的common-util包来根据配置文件动态生成Vo类实例,然后把这些Vo类实例放到常量类的HashMap中还有一个项目是用的Lucene的索引机制,这个连数据库都不用了,直接生成索引文件,然后以后的查询都从索引文件中查,比查数据库也高效得多
      

  4.   

    感谢各位,尤其是wwwtsmy(永远是新手) ,问题已经解决。