3 Stimmen

Fragen zur Datenbank-Aktualisierung

Ich habe eine Webanwendung, die mit Java, JSP und Servlets implementiert ist. Immer wenn es Updates in der Datenbanktabelle gibt, sollte die ArrayList in meinem DAO aktualisiert werden. Gibt es bessere Lösungen?

Lösungen

  1. Erstellen Sie einen Thread im Bean und abfragen Sie die Datenbank. Wenn Updates gefunden werden, füllen Sie die ArrayList erneut auf.
  2. Vom Client aus senden Sie eine Ajax-Anfrage unter Verwendung des Polling-Konzepts.

Bitte lassen Sie mich Lösungen wissen, auch wenn möglich unter Verwendung eines bestimmten Frameworks.

1voto

BalusC Punkte 1034465

Ein Arraylist in Ihrem DAO? Das klingt wirklich nicht richtig. Die DAO-Klasse selbst sollte keine Daten halten. Sie sollten die Daten auch nicht in der Sitzung speichern, sondern dem Client erlauben, sie bei jedem neuen HTTP-Anforderung zu laden. Alle Leistungsprobleme, die Sie dabei feststellen, sollten durch die Verwendung eines Verbindungspools und gegebenenfalls eines Cache der zweiten Ebene gelöst werden.

Was das Auslösen von Updates betrifft, gibt es mehrere Möglichkeiten, dies zu erreichen. Das Wiederbefüllen von "einem Arraylist" auf der Serverseite ergibt zumindest keinen Sinn. Die Anforderung muss von der Clientseite kommen. Ajax-Polling ist in der Tat einer der besten Wege. Eine andere Möglichkeit besteht darin, die JSP-Seite in Intervallen (z. B. einmal pro Minute) kopflos zu aktualisieren, indem Sie den Header verwenden, damit er die Daten erneut aus der Datenbank abfragt. Dies ist einfach, aber am wenigsten benutzerfreundlich.

Was die Frameworks betrifft, würde ich jQuery und/oder JSF dafür vorschlagen.

1voto

Chris Punkte 857

Zunächst einmal stimme ich BalusC zu, dass Sie wirklich keine Daten im DAO speichern sollten! Dies ist ein DAO und der Hauptzweck dieser Klasse besteht darin, die Datenbank abzufragen, um diese Daten abzurufen. Wenn Sie dieses Konzept verstehen, wird Ihnen dies sehr dabei helfen, herauszufinden, wie Sie Updates implementieren können. Was die Updates betrifft, müssen Sie berücksichtigen, wie Ihre Anwendung funktionieren soll. Gibt es häufige Aktualisierungen der Datenbank, die der Benutzer sehen soll, wie beispielsweise einen Punktestand? Hierfür müsste möglicherweise ein Aktualisierungsthread laufen, wenn Sie Java verwenden, oder wenn Sie JSP-Servlets verwenden, wäre die oben genannte Methode ein guter Kompromiss. Wenn Ihre Anwendung benutzergetrieben ist, würde ich vorschlagen, die Daten beim ersten Request des Benutzers abzurufen und dann nicht erneut, es sei denn, der Benutzer sieht sich diese Seite an. Dies sollte keine zusätzliche Codierung erfordern, da ich vermute, dass Ihr Setup dafür ausreichen wird.

Bitte füllen Sie die Array-Liste nicht ständig über einen Thread neu, denken Sie an die Auswirkungen auf die Leistung und sogar die Wartbarkeit Ihrer Anwendung.

Beim Nachdenken über den Datenbankzugriff verwende ich dies als Faustregel: Live-Apps im Vergleich zu benutzergetriebenen Apps erfordern unterschiedliche Modelle.

0 Stimmen

Danke für die Antwort. Ich konnte die folgenden Zeilen im Update-Thread und die oben genannte Methode nicht verstehen: "Überlegen Sie, wie Ihre Anwendung funktionieren soll. Werden häufige Updates in die Datenbank eingefügt, die der Benutzer sehen soll, beispielsweise ein Scoreboard? Daher müsste dies halb live sein. Vielleicht sollte ein Aktualisierungsthread laufen, wenn Sie Java verwenden, oder wenn Sie JSP-Servlets verwenden, wäre die obige Methode ein guter Kompromiss."

1 Stimmen

Ja, also im Grunde genommen bedeutet das, dass wenn Ihre Anwendung dazu bestimmt ist, Daten live anzuzeigen und wichtige Änderungen an den Daten auftreten werden, die der Benutzer sehen muss, dann wäre ein Update-Thread erforderlich, sonst wäre es viel einfacher, auf Anfragen basierende Updates durchzuführen. Hoffentlich hilft das, Suresh. Danke Chris.

0 Stimmen

Semi live: wenn Sie Thread auf Java oder JSP aktualisieren, wie wird der Client die neuesten Daten sehen? Ich meine die Code-Logik.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X