Robiąc loadtesting na naszej aplikacji Zauważyłem, że jeśli używasz @Transactional i @Cacheable annotions że hibernacji zawsze tworzy transakcji bazy danych. Czy istnieje prosty sposób, aby temu zapobiec? Bardziej eleberate sposób rozwiązać ten problem w ciągu wiosny jest posiadanie następujących klas/interfejsówCombination hibernacja @Transactional & ehcache @Cacheable zawsze tworzy DB transakcję
- Servicelayer interfejs
- Cacheable adnotacją klasa, która jest po prostu proxy/przekaz
- Transakcyjnej klasy adnotacja implentation
Co się dzieje, jest po
Połączenie 1:
- transakcja zostanie utworzony
- metoda klasy jest wywoływana
- wynik buforowane & powrócił
Połączenie 2:
- transakcja zostanie utworzony
- Kopia wynik zostanie zwrócony
preferowana wynik powinien być:
Połączenie 1:
- transakcja zostanie utworzony
- metody klasy jest wywoływana
- wynik buforowane & powrócił
połączenia 2:
- Cached wynik zostanie zwrócony
nie jest hibernacji, który jest połączeniem, jest wiosna, że robi to przed wywołaniem metody, które zostały oznaczone @Transactional –