关于数据库更新的问题

时间:2010-09-15 11:06:43

标签: java jsp core

我有一个使用java,jsp,servlets实现的Web应用程序。每当我在数据库表中有更新时,我的DAO中的arraylist应该更新。有没有更好的解决方案。

解决方案

  1. 在bean中创建一个线程并查询数据库,如果找到更新,则重新填充arraylist。
  2. 来自客户端的
  3. 使用轮询概念发送ajax请求。
  4. 请让我知道解决方案,即使可能使用任何框架。

2 个答案:

答案 0 :(得分:1)

DAO中的arraylist?这听起来确实不对。 DAO类本身不应该包含任何数据。您也不应该将数据存储在会话中,而只是让客户端在每个新的HTTP请求上加载它。您遇到的任何性能问题都可以通过使用连接池和必要的二级缓存来解决。

关于触发更新的一个或另一个,有几种方法可以实现这一点。在服务器端重新填充“arraylist”至少没有任何意义。请求必须来自客户端。 Ajax民意调查确实是最好的方式之一。另一种方法是使用<meta http-equiv="refresh" content="60">标头以一定间隔(例如每分钟一次)无头地刷新JSP页面,以便它重新查询来自数据库的数据。这是最简单的,但用户最不友好。

至于框架,我建议使用jQuery和/或JSF。

答案 1 :(得分:1)

首先,与BalusC达成协议,你真的不应该在DAO中存储任何数据!这是一个DAO,这个类的主要目的是查询数据库以检索该数据,理解这个概念将有助于您深入了解如何实现更新。 就更新而言,您需要考虑应用程序的工作方式是否会频繁更新数据库,用户打算将其视为记分板,因此可能需要半实时更新线程应该在java中运行,或者如果使用jsp servlet,上面的方法将是一个很好的折衷。如果你的应用程序是用户驱动的,那么我建议首先请求检索用户的数据,然后不要再次检索,除非用户评论该页面不应该'我需要任何额外的编码,因为我想你的设置就足够了。

请不要经常通过线程重新填充数组列表,而不考虑这会对应用程序的性能甚至可维护性产生影响。

在考虑数据库访问时,我将此作为一般经验法则使用,用户驱动的应用程序需要不同的模型。

相关问题