Hibernate-reactive: session.remove && session.getReference

Erstellt am 7. Sept. 2020  ·  3Kommentare  ·  Quelle: hibernate/hibernate-reactive

Hallo, wie ich verstehe, gibt es nach jpa nur eine Möglichkeit, eine abgetrennte Entität zu entfernen:

factory.withTransaction((session, transaction) -> 
    session.merge(sampleEntity).invokeUni(session::remove)
).await().indefinitely();

Alles ist in Ordnung, aber wenn es um die Leistung geht, dauert der Zusammenführungsvorgang viel Zeit und kann zu echten Leistungsproblemen führen. Zum Beispiel dauert das Entfernen von 5000 Entitäten nach meinen ungenauen Zeitmessungen ~4s, im Ruhezustand dauert es 50ms.

Ich habe gerade von einer neuen Methode namens session.getReference gelesen, die die persistente Instanz einer bestimmten Entität zurückgibt. Ist es möglich, die Verwendung für session.remove zuzulassen?

bug

Alle 3 Kommentare

Ich habe gerade von einer neuen Methode namens session.getReference gelesen, die die persistente Instanz einer bestimmten Entität zurückgibt. Ist es möglich, die Verwendung für session.remove zuzulassen?

Ach, guter Punkt, absolut sollten Sie in der Lage sein , das zu tun. Ich habe es in #360 zum Laufen gebracht.

Ich möchte jedoch, dass Sie verstehen, dass es keine Möglichkeit gibt, ein Objekt remove() zu erstellen, ohne es zuerst abzurufen. Das liegt daran, dass remove() Semantiken wie das kaskadierende Löschen und das Entfernen von Sammlungen hat, die davon abhängen, ob der Status der Entität in der Sitzung vorhanden ist.

Wenn Sie eine Entität unbedingt löschen müssen, ohne sie abzurufen, sollten Sie StatelessSession.delete() oder eine HQL-Abfrage delete .

@Xset-s PS danke für die Meldung, es war ein großes Versehen meinerseits

Kein Problem, vielen Dank für Ihre ausführliche Antwort zum Entfernen des Vorgangs und für eine sehr schnelle Lösung. Ich führe gerade Experimente durch und schreibe meine serverseitige Anwendung mit Ihrer neuen erstaunlichen Bibliothek um, sodass ich einige knifflige Probleme leicht erkennen kann, die nur so erfasst werden konnten (oder mit einer großen Anzahl von Tests 😄).

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen