数据库更新问题

问题描述 投票:0回答:2

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

解决方案

  1. 在bean中创建一个线程并查询数据库,如果发现更新则重新填充数组列表。
  2. 客户端使用轮询概念发送 ajax 请求。

请让我知道解决方案,即使可能使用任何框架。

java jsp
2个回答
1
投票

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

至于在更新时触发一个或另一个,有多种方法可以实现这一点。在服务器端重新填充“数组列表”至少没有意义。该请求必须来自客户端。 Ajax 轮询确实是最好的方法之一。另一种方法是使用

<meta http-equiv="refresh" content="60">
标头每隔一段时间(例如每分钟一次)无头刷新 JSP 页面,以便重新从数据库查询数据。这是最简单的,但对用户最不友好。

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


1
投票

所以首先与 BalusC 一致,你确实不应该在 DAO 中存储任何数据!这是一个 DAO,此类的主要目的是查询数据库以检索数据,理解这个概念将极大地帮助您弄清楚如何实现更新。 就更新而言,您需要考虑您的应用程序将如何工作,数据库是否会频繁更新,用户希望像记分牌一样看到这些更新,因此这可能是一个更新,必须是半实时的如果在java中,或者如果使用jsp servlet,则线程应该运行,上述方法将是一个很好的折衷方案。如果您的应用程序是用户驱动的,那么我建议检索用户第一次请求的数据,然后不再检索,除非用户查看该页面,这应该是'不需要任何额外的编码,因为我想你的设置就足够了。

请不要不断地通过线程重新填充数组列表,因为这会对应用程序的性能甚至可维护性产生影响。

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

© www.soinside.com 2019 - 2024. All rights reserved.