Hibernate und jdbc zusammen

amandina

Mitglied
Hallo,

Wir haben 2 Anwendungen, die beide auf die gleiche Datenbank durch jdbc zugreifen. Eine ist reine Java, die andere ist mit jsf. Die ´reine Java Anwendung sollte jetzt mit Hibernate umgeschrieben werden, aber ich habe die Frage, was passíert mit der zweite, die auch ´Daten verändert. Also die grunsätzliche Frage, wenn die Datenbank auch außerhalb von den persistence schicht geändert werden kann, durch andere Anwendung oder wie auch immer, hat diesen persistence schicht noch Sinn? Wenn ja, welche ist die Lösung?
 
Kann man nciht pauschal sagen

Natürlich kann eine DB auch anderweitig geändert werden.

Natürlich kann ein Programmierer am Framework vorbei programmieren. Das wäre dann ein schlechtes Produkt.

Da kann aber Hibernate nichts für.
 
Die meisten ORM gehen von "exclusive access to the database" aus, also nur das ORM ändert, liegt u.a. am Cache.
 
Kann man aber hibernate sagen: hallo, habe ich mich geändert, bitte synchronisieren?
Nein, das geht nicht. Die Datenbank kann von sich aus ihren Clients keine Nachrichten senden. Die Abfrage geht immer vom Client aus.

Aber, wenn Du in Hibernate keinen Second-Level Cache und keine lang laufenden Sessions benutzt, gibt es keine Probleme, wenn ein externes Tool die Daten in der Datenbank ändert. Ansonsten gibt es in JPA (und damit auch in Hibernate) das Version-Feld (Annotation @Version). Dieses wird bei jeder Änderung hochgezählt. Wenn Hibernate in seinem Cache also eine Entity mit niedriger Versionsnummer als die DB hat, erkennt es, dass es eine veraltete Version hat und lädt die neue nach. Den gleichen Mechanismus kann man auch mit Timestamps umsetzen. Hier wir halt nicht einfach eine Nummer hochgezählt, sondern bei jeder Änderung der aktuelle Timestamp gesetzt.
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben