- Verschifft
- 23. September 2026 um 14:39 UTC
- Autor
- Kamo
- Ausschuss
- 3677d12
findById() auf LeadVendorProduct zieht seinen Standard-EAGER-Anbieter, der selbst eifrig-Fegt seine eigene org UND sein Markt (die eifrig-fetches ITS org wieder) - und Organisation ist @Inheritance(JOINED), so dass jeder dieser Hops auch Außen-Joins ORG_MTG zu lösen polymorphe Untertyp. Gemessen in der Produktion pg_stat_statements: ein 8-Wege-Zusammen, . 780K Anrufe an 10-21ms (ca. 3 Stunden kumulative DB-Zeit), fast ausschließlich Single-id-Lookups (wo id=$1), nicht eine Batchfähiges N+1 - jeder Anrufer hat bereits eine ID und liest bei den meisten Anbietern + eigene Skalarfelder. Fügt zwei schlanke LeadVendorProductRepository-Methoden hinzu und schaltet jeden findById() Anrufer in Kamo-Shared-Bibliothek + Security zu dem, das entspricht, was es tatsächlich liest: - findIsEmptyCreditFfaById: eine skalare JPQL-Projektion, überhaupt keine Verbindungen. - findByIdWithVendor: ein @EntityGraph beschränkt auf "vendor" (eine einfache, nicht-JOINED Entität) . vendor.org und vendor.market kommen zurück als uninitialisierte Proxys, deren id ist immer noch lesbar ohne zusätzliche Abfrage, die alle Org-Eigentum Kontrollen in diesen Anrufern jemals benötigt. Bewusst KEIN @EntityGraph in vendor.org oder vendor.market.organization: Beide sind Organisation und eine Entitätsgrafik, die weitere Assoziationen von einer JOINED-Erbeeinheit abzieht ist die genaue Form, die in der Produktion auf Hibernate 6.2.13 (fehlende AUS-Klausel) genommen /führt Eintrag für die Wurzeltabelle . siehe LeadAssigneeRef). Die beiden Anrufer, die wirklich brauchen den Markt Organisation ************ in Security Service) laden LeadMarket als zweite, normale Abfrage statt - die gleiche Split, die diese Codebasis bereits für TeamMember verwendet. JSON-Formen sind unverändert; nur welche Spalten aus der Datenbank ausgelesen werden, geändert.
