Heim >Java >javaLernprogramm >Warum funktioniert mein JPA @OneToOne Lazy Loading nicht?
Behebung von Lazy-Loading-Frustrationen in JPA OneToOne-Beziehungen
Diese Abfrage betrifft eine Anwendung, deren Leistung aufgrund einer übermäßigen Anzahl von Verknüpfungen im Ruhezustand langsam ist Abfrage. Trotz der Annotation von @OneToOne und @ManyToOne mit FetchType.LAZY scheint Lazy Loading keine Wirkung zu zeigen.
Ursache des Problems
Das Problem liegt in der Tiefe Hierarchie der OneToOne- und ManyToOne-Beziehungen zwischen Entitäten. Während ManyToMany- und OneToMany-Beziehungen leicht verzögert werden können, gilt das Gleiche nicht für bestimmte Arten von OneToOne-Assoziationen.
Lösungen
A. Nullable OneToOne-Beziehungen (unbeschränkt)
Unbeschränkte Eins-zu-Eins-Beziehungen, bei denen die zugehörige Eigenschaft null sein kann, können ohne Bytecode-Instrumentierung nicht als Proxy verwendet werden. Dies liegt daran, dass die Eigentümerentität wissen muss, ob die Zuordnung einen Proxy oder Null enthält, was nicht allein anhand der Spalten der Basistabelle bestimmt werden kann.
B. Nicht nullbare Eins-zu-Eins-Beziehungen
Für nicht nullbare Eins-zu-Eins-Zuordnungen stehen die folgenden Optionen zur Verfügung:
Ordnen Sie die Assoziation als verbundene Beziehung zu, Hinzufügen einer Fremdschlüsselspalte zur Eigentümertabelle:
@OneToOne(fetch = FetchType.LAZY) @JoinColumn(name="other_entity_fk") public OtherEntity getOther()
C. ManyToOne-Beziehungen
ManyToOne-Beziehungen können ohne Einschränkungen verzögert werden: @ManyToOne(fetch=FetchType.LAZY). Stellen Sie jedoch sicher, dass diese Annotation nicht in der Abfrage selbst überschrieben wird.
Überlegungen
Wenn das eifrige Laden von OneToOne-Zuordnungen zu erheblichen Leistungsproblemen führt, liegen umfassendere Designfehler vor Das Datenmodell sollte untersucht werden. Als letztes Mittel kann eine Bytecode-Instrumentierung erforderlich sein.
Implementierungshinweise
Das obige ist der detaillierte Inhalt vonWarum funktioniert mein JPA @OneToOne Lazy Loading nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!