Ruhezustand - So behalten Sie ein neues Element in einer Sammlung bei, ohne die gesamte Sammlung zu laden

Ich habe eine Sammlung in meinem Modell, die eine Reihe von "Vorgängerversionen" meines Stammdomänenobjekts enthält. Die vorherigen Versionen sind daher unveränderlich, und wir werden sie niemals aktualisieren und nur frühere Versionen hinzufügen wollen, sobald sie entstehen. Auch das 'versionierte' Domain-Objekt ist ziemlich komplex und führt dazu, dass ein starker Datenbankzugriff abgerufen wird.

Wenn ich eine neue Version eines dieser Objekte habe, möchte ich diese mit den anderen speichern, ohne den gesamten Satz zu laden. In den erweiterten FAQ finden Sie einige Ratschläge dazu:

Warum initialisiert Hibernate immer eine Sammlung, wenn ich nur ein Element hinzufügen oder entfernen möchte?

Leider definiert die Collections-API Methodenrückgabewerte, die nur durch Zugriffe auf die Datenbank berechnet werden können. Hiervon gibt es drei Ausnahmen: Der Ruhezustand kann a<bag>, <idbag> oder<list> deklariert mitinverse="true" ohne die Sammlung zu initialisieren; Der Rückgabewert muss immer true sein.

Wenn Sie zusätzlichen Datenbankverkehr vermeiden möchten (z. B. in leistungskritischem Code), müssen Sie Ihr Modell so umgestalten, dass nur Mehrfachzuordnungen verwendet werden. Das ist fast immer möglich. Verwenden Sie dann Abfragen anstelle des Sammlungszugriffs.

All dies ist mir neu und ich bin mir nicht 100% sicher, wie ich Ihr Modell so umgestalten kann, dass nur mehrere Assoziationen verwendet werden. Kann mir jemand ein Beispiel geben, in dem ich auf ein Tutorial verwiesen werde, damit ich erfahren kann, wie sich das Problem auf diese Weise beheben lässt?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage