Ich habe gelernt, dass Hibernate keine Instanz Ihrer tatsächlichen Entitätsklasse zurückgibt, wenn es Ihnen das Ergebnis einer Abfrage gibt, sondern stattdessen eine 'Proxy' Instanz, die dynamisch ist Unterklassifiziert von der Klasse Ihrer tatsächlichen Entität. Ich verstehe den Grund für dieses Verhalten, dass es die Realisierung der faulen Initialisierung ermöglicht. Allerdings habe ich ein paar Fragen offen über die Einzelheiten der Durchführung dieser Proxy-Klassen:Hibernate: Details der Proxyimplementierung (Lazy Fetching)
Wird die faul geholt Feld bekommen nur geladen, wenn ich den Getter verwenden? Was passiert, wenn ich das Feld beispielsweise in meiner Methode
equals
oderhashCode
verwende? Wird die Ausführung dieser Methoden zu einemNullPointerException
führen, wenn ich den Getter dieses Feldes vorher nicht aufgerufen habe?Wie genau initialisiert Hibernate das Feld, wenn seine Initialisierung ausgelöst wird? Führt es die Setter-Methode des Felds aus, die ich in der Entitätsklasse definiert habe, oder wird es den Wert direkt der Variablen über Reflektion oder etwas Ähnliches zuweisen?