Ich bin dabei, einen Algorithmus zu optimieren, und ich habe festgestellt, dass Hibernate wiederholt Update-Anweisungen erstellt und veröffentlicht, anstatt sie wieder zu verwenden. Diese stammen alle aus derselben Abfrage.Spring Hibernate, zu vermeiden, dass Anweisungen registrieren und schließen wiederholt
15:57:31,589 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,591 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
15:57:31,594 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,595 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
15:57:31,597 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,599 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,600 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,601 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
die wichtigste Methode des Algorithmus hat eine @Scope
und einen @Transactional
Annotation. Das erwartete Verhalten ist, dass, wenn etwas schief geht, die Updates des Algorithmus ROLLBACK
sind.
Darunter verwendet der Algorithmus eine @Service
, die eine andere @Scope
hat und auch @Transactional
ist. Der Dienst verwendet Hibernate, um die Datenbank mit session.update(entity)
zu aktualisieren. Die Dokumentation besagt, dass verschachtelte Transaktionen die Transaktion standardmäßig wiederverwenden, wenn sie vorhanden ist.
- Ist diese Bestätigung oben korrekt?
- Kann der Umfang Änderung Probleme verursachen?
- Wie kann ich Hibernate die Anweisung während der Transaktion wiederverwenden?
Vielen Dank für Ihre Aufmerksamkeit