Hibernate: Können auf diese Weise "Datenleichen" in der DB entstehen?

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Frage zu Hibernate in Bezug auf Objektreferenzen. Folgendes Szenario:

Ich habe eine Klasse "Person" (P) und eine Klasse "Adresse" (A), wobei P eine Referenz auf A hat (person.getAdresse()). Sagen wir nun, die Klasse P ist via Hibernate auf eine Datenbank gemappt.
Wenn ich mir nun P mit Hibernate aus der Datenbank hole und es auch eine zugehörige Adresse A gibt, so funktioniert ja

Java:
Adresse adresse = person.getAdresse();

und die Adresse hat ja dann auch eine ID (der primärschlüssel aus der DB).

Was passiert nun, wenn ich danach Folgendes mache:

Java:
person.setAdresse( new Adresse() );

und Hibernate aktualisiert das "person" Objekt in der Datenbank (nun wird das erste Adresse Objekt irgendwann vom Java GC abgeholt) - ist es richtig, dass ich nun eine "Datenleiche" in der Datenbank habe, nämlich eine Adresse, zu dem nichts mehr eine Referenz hat?


Vielen Dank für Eure Hilfe!
 
Danke für Deine Antwort, ich hätte auch "ja" gesagt. Es könnte aber auch sein, dass Hibernate an dieser Stelle so intelligent agiert und diesen Fall "bemerkt", sodass keine Leiche in der DB verbleibt - denn Hibernate macht ja für die Klassen Proxies bzw. Wrapperklassen und könnte es dadurch durchaus erkennen.
 
Zurück