Lassen Sie mich vor der eigentlichen Frage einige Hintergrundinformationen geben: Kürzlich bin ich auf ein N+1-Problem gestoßen, das laut diesem Artikel von Vlad Mihalcea durch Vorabrufen der Entitäten aus den Beziehungen innerhalb desselben Persistenzkontexts gelöst werden konnte. Tatsächlich wurde das N+1-Problem gelöst (auf eine feste Anzahl von 10 Abfragen). Allerdings wurde die Leistung nach dieser Implementierung drastisch verringert, und ich versuche immer noch herauszufinden, warum. Manchmal kam es sogar zu einer Zeitüberschreitung, wenn ich versuchte, eine Verbindung zur Datenbank herzustellen, mit der Fehlermeldung „JDBC-Verbindung konnte nicht erworben werden“.
Meine Frage ist also: Was passiert wann hinter den Kulissen? Ich verwende @Transactional(readOnly=true) in einer Methode? Erstellt es eine Sperre, während die Methode ausgeführt wird? Wenn ja, was könnte ich tun, um sicherzustellen, dass ich mich im gleichen Persistenzkontext befinde und daher mit dem Prefetch das erreiche, was ich will?
Alles, was mich in die Richtung des Tatsächlichen weisen könnte Problem wäre sehr dankbar.
Wie funktionieren Transaktionen aus einer schreibgeschützten Perspektive in Spring JPA + Hibernate? ⇐ Java
-
- Similar Topics
- Replies
- Views
- Last post