Jestem w trakcie optymalizacji algorytmu i zauważyłem, że Hibernate tworzy i wyrzuca powtórnie instrukcje aktualizacji, zamiast ich ponownie używać. Wszystkie są z tego samego zapytania.Wiosenna hibernacja, unikaj instrukcji rejestrowania i zamykania powtarzalnie
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]
Główną metodą algorytmu zawiera się @Scope
i @Transactional
adnotacji. Oczekiwane zachowanie jest takie, że jeśli coś pójdzie nie tak, aktualizacje algorytmu są następujące: ROLLBACK
.
Pod algorytm wykorzystuje @Service
który ma inny @Scope
i jest także @Transactional
. Ta usługa korzysta z oprogramowania Hibernate w celu aktualizacji bazy danych za pomocą session.update(entity)
. Dokumentacja mówi, że domyślnie transakcje zagnieżdżone ponownie wykorzystują transakcję, jeśli istnieje.
- Czy to potwierdzenie powyżej jest prawidłowe?
- Czy zmiana zakresu może powodować problemy?
- W jaki sposób mogę ponownie wykorzystać komunikat Hibernuj podczas transakcji?
Dzięki za uwagę