-
Gdzie stosujecie / rekomendujecie zapinanie
@Transactional? W warstwie serwisu czy "niżej" w jakimś dao?
Drugie podejście wydaje się sensowne bo czesto dopiero na końcu coś zapisujemy / zmieniamy na bazie po wykonaniu
"wyżej" w serwisie jakichś reguł biznesowych ewentualnie jakiś odczyt z bazy ale to nie musi być w transakcji
plus po wywołaniu zapisu na dao mamy pewność, że był commit (jeżeli nie było wyjątku) więc możemy normalnie
beż żadnej magii np. wysłać powiadomienie / wrzucić na kolejkę etc. Z drugiej strony jak nasz serwis zależy od
innych, które coś zmieniają na bazie to nie ma wyboru i trzeba zastosować to pierwsze podejście. -
Czy używacie
@Transactional(readOnly = true)? Z jednej strony niepotrzebnie wpływa na wydajność a z drugiej
pilnuje aby metoda na pewno była tylko do odczytu plus bez niej lazy loading nie zadziała jeśli używamy hibernate.
Transactional w warstwie serwisu czy dao
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gdańsk
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2420
- Na serwisie.
- Często
readOnly = trueto no-op i ani niczego nie pilnuje, ani nic nie zmienia. Sprawdź jak się z twoim "dostawcą" JDBC zachowa...
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
- Tam gdzie potrzebujesz transakcji ;) Jeśli twoje metody serwisu wykonują kilka operacji bazodanowych i chcesz zeby było "wszystko albo nic" to musisz zrobić transakcje właśnie na tym poziomie. Transakcja na jakimś DAO w ogóle nie bardzo ma sens, bo robisz tam jedną operacje.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1910
Jw. w dużej mierze jest to pytanie o ziarnistość transakcji, granice agregatów itd. Transakcje powinny być najmniejsze jak się da, ale nie mniejsze :)
- Rejestracja: dni
- Ostatnio: dni
- Postów: 69
"Transactional w warstwie serwisu czy dao"
@Transactional ? Nigdzie.
Transakcje pisane "ręcznie", kodem
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Kraków
- Postów: 255
Stój Halina napisał(a):
"Transactional w warstwie serwisu czy dao"
@Transactional? Nigdzie.
Transakcje pisane "ręcznie", kodem
Skoro w projekcie jest spring to po co ręcznie to robić? Sam nie jestem jakimś wielkim fanem springa ale używanie go z głową nie powinno powodować wielu problemów. Już nie przesadzajmy…
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2787
Skoq napisał(a):
Stój Halina napisał(a):
Transakcje pisane "ręcznie", kodem
Skoro w projekcie jest spring to po co ręcznie to robić? Sam nie jestem jakimś wielkim fanem springa ale używanie go z głową nie powinno powodować wielu problemów. Już nie przesadzajmy…
Tylko że oprócz @Transactional, można użyć TransactionTemplate, również ze Springa, a daje większą kontrolę - https://www.baeldung.com/spring-programmatic-transaction-management