JPA Entities mit Proxies ausserhalb einer Session (Lazy Loading)

Diskutiere Entities mit Proxies ausserhalb einer Session (Lazy Loading) im Data Tier Forum; Hallo zusammen, ich nutze JPA mit Hibernate im Unterbau um Zugriffe auf Datenbanken zu gewährleisten. Der Zugriff auf dem EntityManager wird...

  1. dbausnnd
    dbausnnd Mitglied
    Hallo zusammen,

    ich nutze JPA mit Hibernate im Unterbau um Zugriffe auf Datenbanken zu gewährleisten. Der Zugriff auf dem EntityManager wird über den ApplicationContext (Spring) im @Transactional DAO durchgeführt. Bedeutet nach dem laden einer Entity wird die Transaktion geschlossen.

    Folgende Möglichkeiten gibt es beim FetchType für Referenzen:

    FetchType.EAGER
    Unter Umständen werden große Teile der Datenbank geladen, was nicht gewünscht ist aufgrund von Performance.

    FetchType.LAZY
    Referenzen werden nicht mitgeladen. Nach dem verlassen der DAO Methode wird das Objekt detached und ein Zugriff auf die Referenzen ist nicht mehr möglich. Wenn die Entities in eine andere Schicht übergeben werden besteht die Möglichkeit das von hier auf die Referenzen zugegriffen wird. Die einzige Möglichkeit das abzufangen wäre ein Try Catch Block um die Getter Aufrufe - Unpracktikabel.

    Folgende Möglichkeiten bestehen um Referenzen zu laden:

    UseCase bezogene Getter Methoden im DAO
    Je nach use Case werden die Referenzen mitgeladen oder nicht. Ist eine Entität vollständig ist das wunderbar, jedoch besteht die Gefahr wie beim FetchType.LAZY, wenn die Referenzen nicht geladen werden.

    Entität mit Proxy
    Der Proxy wird aus dem DAO geliefert. Wird jetzt auf eine Referenz zugegriffen kann der Proxy die Daten nachladen. Er kann Sie natürlich nur komplett nachladen. Hierbei ist viel Code notwendig da das Entitäts Objekt doppelt realisiert wird.

    Nachladen in der Entität selber
    Bei den Gettern und Settern der Referenzen wird geprüft ob diese geladen wurde oder nicht. Sind die Referenzen Lazy wird das Objekt direkt vom DAO erneut geladen. Problem dabei ist das ich ein ganz neue Entität erhalte. Somit kann eine Entität sich selber nicht nachladen. Auch sollten PoJo´s keine Logik enthalten.

    WUNSCHVORSTELLUNG ;)
    Ich erzeuge ein unvollständiges Entitäsobjekt aus dem DAO. Sobald auf eine Referenz zugegriffen wird, wird lediglich diese Referenz hinzugeladen. Wird auf eine weitere Referenz zugegriffen wird auch diese nachgeladen, ohne das die erste gelöscht wurde.

    Wie habt ihr die Problematik mit den unvollständigen Entitäsobjekten gelöst? Übergebt Ihr einfach diese unvollständigen Objekte? Ist meine Wunschvorstellung evtl doch möglich?

    Mich interessieren eure Lösungsansätze.

    Schon mal besten Dank

    dbausnnd.

    Hierbei ist mir das Problem des Lazy Loadings bewusst. Natürlich will man nicht immer die Daten FetchType.EAGER laden (Performance).
     
    Zuletzt bearbeitet: 11. Sep. 2014
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
Die Seite wird geladen...

Entities mit Proxies ausserhalb einer Session (Lazy Loading) - Ähnliche Themen

JPA Entities und deren Beziehungen modellieren
JPA Entities und deren Beziehungen modellieren im Forum Application Tier
JPA Entities EJB-fähig
JPA Entities EJB-fähig im Forum Data Tier
Tabellen von nicht mehr vorhandenen Entities werden generiert
Tabellen von nicht mehr vorhandenen Entities werden generiert im Forum Datenbankprogrammierung
javax.el.PropertyNotFoundException: Property 'bezeichnung' not found on type Entities.Produkt
javax.el.PropertyNotFoundException: Property 'bezeichnung' not found on type Entities.Produkt im Forum Web Tier
ClassCastException bei Entities-JAR im EAR
ClassCastException bei Entities-JAR im EAR im Forum Data Tier
Thema: Entities mit Proxies ausserhalb einer Session (Lazy Loading)