Lazy vs. Eager loading mit JPA
Ich versuche, einige PPV Sachen zu arbeiten. Ich habe eine Tabelle mit Fremdschlüssel zu anderen Tabellen. Wenn ich generieren die JPA-Entitäten bekomme ich zu viele anotations über die Variablen... was würde ich tun müssen, bekommen alle Tabellen zurück, die in das ResultSet? wenn ich in der Tat nennen Sie es. Hier ist ein Beispiel, was ich versuche zu tun.
@OneToMany(mappedBy="resourceId")
private List<DistributionLink> distributionLinkCollection;
@OneToMany annotation sitzt ziemlich...
Bin ich denken, um alle Werte zurück die ich brauchen würde, rufen Sie einfach die benannte Abfrage, die Anrufe, die für diese Tabelle richtig?
qLaunchArr = (QuickLaunch[])emf.createNamedQuery("QuickLaunch.getQuickLaunch").getResultList().toArray();
Bin ich Weg von base zu denken, dass ich auch ein array von DistributionLinks mit allen Ergebnis-sets?
Jetzt weiß ich, das hat etwas zu tun mit Eager Loading vs Lazy loading. Genau das, was, ich bin mir nicht sicher. Ich weiß, lazy loading, nur lädt, @oneToMany Attribute, die explizit genannt (glaube ich)? Wie bekomme ich wieder alle diese Sammlungen müssen ich. Muss ich eine Schleife durch das ResultSet und rufen Sie eine benannte Abfrage, um alle Resultsets mit einer benannten Abfrage?
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wählen, um lazy load etwas, je nachdem, ob man noch in der Transaktions-Kontext, wenn Sie Holen Ihr Kind Sammlung mit einem getter, JPA sollte automatisch Holen es für Sie. Also, wenn die Daten Blätter der session-bean, hat der entity-manager, holte das parent-Objekt, Sie werden nicht in der Lage, automatisch zu instanziieren, die lazy geladen Kollektion.
Wenn Sie einen EAGER fetch-Strategie, die jede Instanz dieser Auflistung wird bereits instanziiert wurde und wird immer und überall verfügbar.
Einen guten Kompromiss zu finden, können Sie vermeiden, einschränken, Ihre design-Entscheidung (aber immer noch können Sie die Vorteile von lazy loading zu vermeiden, laden Sachen, die Sie nicht brauchen auf jeden Holen der Datensätze), um nur den Umgang mit diesen Sammlungen, die in der Bohne holt sich den übergeordneten Entitäten wäre, wenn Sie im Voraus wissen, dass Sie benötigen, die Sammlung, stick in Ihre Abfrage: