Hibernate Fragen zu Lazy Loading

Diskutiere Fragen zu Lazy Loading im Data Tier Forum; Hallo Community, ich habe bald ein Vorstellungsgespräch (neues Kapitel in meinem Leben :-) ) und habe eine kleine Aufgabe zur Vorbereitung...

  1. ozan
    ozan Neues Mitglied
    Hallo Community,

    ich habe bald ein Vorstellungsgespräch (neues Kapitel in meinem Leben :) ) und habe eine kleine Aufgabe zur Vorbereitung bekommen, die ich in 3-5 Folien (10 Minuten) präsentieren muss. Dabei muss ich einen Überblick zu Hibernate ORM geben. Danach soll ich im Detail erklären, wie der Lazy Loading Mechanismus in Hibernate funktioniert, für den ich die Vor- und Nachteile aufzählen muss. Dazu soll ich dann aber auch erzählen, was das Problem bei Lazy Loading ist. Zum Abschluss soll ich dann mind. 2 verschiedene Lösungsansätze zur Vermeidung dieses Problems aufzählen.

    Ich habe mich natürlich über Hibernate und Lazy Loading etwas schlau gemacht:
    Hibernate ist ein Persistenzframework für Java. Lazy Loading lädt für den Anfang nur die relevanten Objekte, später benötigte Dateien werden einfach nachgeladen.

    Vorteile: Performanz, was noch?
    Nachteile: Gibt es sicherlich, aber welche? Was genau passiert, wenn man die Kindobjekte von der Elternklasse nachlädt? Wird über die Kindobekte iteriert und alles wird nachgeladen? Wie kann ich mir das vorstellen?

    Was genau ist das Problem bei Lazy Loading? Ich habe noch nie damit gearbeitet und kann mir nicht vorstellen, welches explizite Problem auftreten kann.

    Kennt Ihr mind. 2 Alternativen zur Vermeidung des Problems?

    Ich freue mich über Eure Antworten!

    Liebe Grüße
    Ozan
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. stg
    stg Bekanntes Mitglied
    Man will vermutlich auf das "N+1"-Problem zu sprechen kommen. Wenn du danach bei Google suchst, solltest du genügend Antworten auf all deine Fragen finden.
     
  4. ozan
    ozan Neues Mitglied
    Servus stg,

    Danke für Deine Antwort. Habe das eben auch rausgefunden, dass es dieses Problem gibt. Lese gerade darüber.
    Zu den Vorteilen fällt mir sowas ein (auch nach Recherche):
    • Weniger Speicherverbrauch, da nur die nötigsten Daten abgerufen werden
    • Weniger Anlaufzeit der Anwendung
    • Unnötige SQL-Anweisungen werden vermieden
    Ein Nachteil fällt mir bis jetzt immer noch nicht ein :/ Vielleicht, dass dann der Code komplexer wird? Kann das sein?
     
  5. stg
    stg Bekanntes Mitglied
    Nö, der Code wird nicht komplexer. Der Zugriff auf die Daten erfolgt vollkommen transparent. Du bekommst im Code gar nicht mit, ob du auf ein Objekt direkt zugreifst oder aber nur auf ein Proxy, welches nachträglich initialisiert wird.

    Wenn du Daten nicht brauchst, ist es natürlich von Vorteil, wenn diese gar nicht erst geladen werden. Wenn du allerdings auf diese Daten zugreifen willst, dann wäre es doch sinnvoller, diese direkt mitzuladen?!
    Statt Vor- und Nachteile aufzuzählen (was mMn nicht wirklich sinnvoll ist) würde ich an deiner Stelle eher gegenüberstellen, was die Unterschiede zwischen Eager- und Lazy-Loading ausmacht. Wann nutzt man das eine und wann das andere? Welche Folgen hat die Wahl des FetchTypes jeweils?
     
  6. ozan
    ozan Neues Mitglied
    Ein Proxy? Wie kann ich das verstehen? Was geschieht denn bei Lazy Loading im Detail? Wird dabei erst die nötige Klasse geladen und im Hintergrund noch was offen gelassen (joins?), um bei Bedarf direkt darauf zugreifen zu können? Kannst Du mir sagen, was genau im Detail passiert?

    Eager Loading würde mMn Sinn bei kleineren Anwendungen mit wenigen Abhängigkeiten Sinn machen. Lazy Loading eben bei größeren, wo nicht alle abhängigen Daten, unter Umständen mehrere Tausend Zeilen in der Datenbank, gebraucht werden.

    Danke Dir..
     
  7. Joose
    Joose Super-Moderator Mitarbeiter
    Ein Nachteil: Ein Objekt wird am Anfang geladen (nur die benötigten Daten) ... sollen dann viele Daten nachgeladen werden, so kann es je nach Daten natürlich zu kurzen Wartezeiten kommen.
     
Die Seite wird geladen...

Fragen zu Lazy Loading - Ähnliche Themen

aktuelle Position des Hauptfensters abfragen
aktuelle Position des Hauptfensters abfragen im Forum Allgemeine Java-Themen
Daten in Java intern abfragen
Daten in Java intern abfragen im Forum Datenbankprogrammierung
Objekte-Fragen
Objekte-Fragen im Forum Java Basics - Anfänger-Themen
Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement
Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement im Forum Java Basics - Anfänger-Themen
Algorithmus für bessere Kollisionsabfragen
Algorithmus für bessere Kollisionsabfragen im Forum Spiele- und Multimedia-Programmierung
Thema: Fragen zu Lazy Loading