Wie wird die verzögerte Initialisierung von Sammlungen in Hibernate implementiert?
sobes.tech KI
Antwort von AI
In Hibernate wird die verzögerte Initialisierung (Lazy Loading) von Sammlungen durch Proxy-Objekte und spezielle Sammlungshüllen implementiert. Beim Laden einer Entität mit einer Sammlung lädt Hibernate nicht sofort alle Elemente der Sammlung, sondern erstellt stattdessen eine Proxy-Sammlung, die eine Referenz auf die Sitzung und Informationen zur Abfrage enthält.
Wenn die Sammlung zum ersten Mal verwendet wird (z.B. durch Aufruf der Methode size() oder durch Iteration), führt Hibernate automatisch eine Datenbankabfrage durch, um die echten Daten zu laden. Dies spart Ressourcen und verkürzt die Ladezeit, insbesondere bei der Arbeit mit großen Datenmengen.
Beispiel:
@Entity
public class Author {
@OneToMany(fetch = FetchType.LAZY, mappedBy = "author")
private Set<Book> books;
// Getter und Setter
}
Hier wird die Sammlung books nur beim ersten Zugriff geladen, nicht beim Laden des Author-Objekts.