Announcement

Collapse
No announcement yet.

Struts2 + Hibernate >> Cache?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Struts2 + Hibernate >> Cache?

    Hallo,

    ich habe mir eine kleine Webanwendung mit Tiles gebaut.
    Im Hintergrund bilde ich die DB-Schicht mit Hibernate3 ab.
    Die Anwendung läuft unter Tomcat 6 und Eclipse.

    Die Action-Klassen machen bislang noch das übliche.
    Über einzelne Methoden ändere/lösche/erstelle ich Hibernate-Objekte entsprechend eines Forms. Mit einer lade ich alle DB-Inhalte und lasse sie als Liste in der JSP anzeigen.

    Jetzt habe ich festgestellt, daß nach einer Änderung des Datenbestands (Löschen oder Hinzufügen) abwechselnd immer die aktuelle (richtige) Liste und der vorangegangene Stand ausgegeben wird.
    Ein lustiges Spiel, wenn man die Seite mehrmals aufruft.

    Mit einer eigenen Java-Applikation habe ich Hibernate getestet. Das läuft ohne Probleme.

    Es müßte also in Struts eine Art von Cache geben, der bei mir zwei Zustände einer Seite vorhält und die stapelweise abarbeitet.

    Kann das sein?
    Hat jemand dazu eine Idee?


    Danke und Gruß

  • #2
    Das hat sich eben erledigt.

    Ursache liegt doch bei Hibernate (vielleicht in Verbindung mit Struts).

    Wenn ich nach Änderungen die Session schließe und neu verbinde wird immer der richtige Stand angezeigt.

    Comment


    • #3
      Würde ein anderes Vorgehen vorschlagen:

      Die direkten Zugriffe aus der Action auf Hibernate in eine Schicht der Geschäftslogik auslagern und dort entsprechende DAO Klassen anlegen. Gelesen und geschrieben wird dann nur über diese Klassen. Alle Actions nutzen diese zentralen Klassen.

      Denke, das Verhalten kommt daher, dass in der Session persistente Objekte sind, die nicht aktualisiert werden.
      Christian

      Comment


      • #4
        Danke für den Tipp.

        Ich habe mal den DB-Zugriff in eine Singleton-Klasse ausgelagert.

        Leider habe ich doch noch keine sinnvolle Erklärung für das Verhalten.

        Auch meine ursprüngliche Annahme, daß es nur zwei Zustände gibt und daß es eher an Struts liegt ist wohl nicht haltbar.

        Nach mehreren Veränderungen habe ich nach mehrmaligen Aktualisieren der Ergebnisliste verschiedene Stände, die mir angezeigt werden.

        Beim Debugging sind auch direkt die Ergebnisse der Hibernate-Query unterschiedlich.
        Es liegt also eher an Hibernate und wie ich es eingebungen habe.

        Comment

        Working...
        X