日期:2014-05-19  浏览次数:20724 次

java相关 怎么把数据库的数据预先存入内存
举例说,A程序里获得一个id,调用B程序(该程序利用A获得的id进行数据库查询,得到需要的数据)。A程序调用B的数据进行要执行的一些判断之类的。
想要的是A得到的数据不要B多次访问数据库了。想法上是想在servlet初始化时把数据加载进内存,关键怎么编写实现?求帮忙~~有其他思路的也说说吧~~~
新手一枚~~~~~5555
java?servlet 数据库

------解决方案--------------------
完全可以啊。
你创建一个servlet的时候,添加一个init()方法,init方法中执行查询数据库的方法,把数据导入内存。
默认情况下servlet被加载是在第一次请求访问到来得时候,不过可以使用xml文件中配置
<load-on-startup>-1</load-on-startup>
是其在启动tomcat服务的时候就加载servlet就可以了。
------解决方案--------------------
楼主的意思是想在初始化servlet的时候,执行数据库查询操作,将所需要的数据都缓存到内存中,之后查询数据不需要到数据库中.建立一个全局变量Arraylist,在serverlet的init()方法中写hibernate语句,然后将查询的结果集赋值给Arraylist,之后的查询只需要在调用的方法中去遍历Arraylist这个变量就行了。当然这只是在一个servlet中定义全局变量,如果需要在不同的jsp页面或是serverlet中也能遍历到Arraylist这个对象,就将Arraylist保存到httpsession对象中
------解决方案--------------------
public class First_test extends HttpServlet {
List<Object> list=null;
========================================

public void init() throws ServletException {
// Put your code here
//init()中加载数据库中的查询到的数据
Session session=(new Configuration()).buildSessionFactory().openSession();
String hql="";/* 数据查询省略*/
Query query=session.createQuery(hql);
//这个list变量在sevelet开始就定义了
  list= query.list();
                 for(Object l:list){
}
=============================
在doget或是dopost方法里面
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session2=request.getSession();
session2.setAttribute("infomation", list);
 
}
=================
之后不管是在jsp页面上取值还是在servlet中,都可以通过HttpSession 定义的对象调用getParameter("information")方法取得list,