代码之家  ›  专栏  ›  技术社区  ›  Dead Programmer

数据库更新问题

  •  3
  • Dead Programmer  · 技术社区  · 14 年前

    我有一个使用java、jsp和servlets实现的web应用程序。每当在数据库表中有更新时,DAO中的arraylist就应该更新。有更好的解决办法吗。

    解决

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

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

    2 回复  |  直到 14 年前
        1
  •  1
  •   BalusC    14 年前

    你刀上的纹身?这听起来真的不对。DAO类本身不应该包含任何数据。您也不应该在会话中存储数据,而应该让客户机在每个新的HTTP请求上加载它。您遇到的任何性能hog都将通过使用连接池和二级缓存(如果需要)来解决。

    至于触发一个或另一个更新,有几种方法可以实现这一点。在服务器端重新填充“arraylist”至少没有意义。请求必须来自客户端。Ajax轮询确实是最好的方法之一。另一种方法是使用 <meta http-equiv="refresh" content="60"> 头,以便重新查询数据库中的数据。这是最简单的,但对用户最不友好的。

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

        2
  •  1
  •   Chris    14 年前

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

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

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