如何预先将数据加载到内存
应该有不少朋友遇到这样的问题,就是有一些简单的代码-名称数据,例如:
<option value = "12 "> 天津市 </option>
<option value = "13 "> 河北省 </option>
<option value = "14 "> 山西省 </option>
<option value = "15 "> 内蒙古自治区 </option>
<option value = "21 "> 辽宁省 </option>
系统一般处理和记录的是代码,也不希望在要用到其对应的名称时到数据库中去查询,希望预先将这些数据加载到内存,用到时直接调用其数据就可以了,如果一个系统中有不少这样的数据,例如地区数据,行业数据,请问大家有什么好的方案来进行预先加载,以及调用?对了,在不使用任何持久框架的情况下。
------解决方案-------------------- 给大家介绍个技术群
大家一起学习,一起提高
32517633
------解决方案--------------------在第一次把这些读到内存里,以后再取得时候,进行判断内存里是否有,如果有,就不用去取了
可以放到application里,这样就都能共享了。
------解决方案-------------------- <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 "); %>
------解决方案--------------------有很多方法的,最简单的就是用一个servlet,让它随Web应用启动而启动,在这个servlet中把这些数据放到一个常量类中
我们之前的项目中采用了apache的common-util包来根据配置文件动态生成Vo类实例,然后把这些Vo类实例放到常量类的HashMap中
还有一个项目是用的Lucene的索引机制,这个连数据库都不用了,直接生成索引文件,然后以后的查询都从索引文件中查,比查数据库也高效得多