-
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.
- Rejestracja:około 11 lat
- Ostatnio:około 20 godzin
- Lokalizacja:Gdańsk

- Rejestracja:prawie 5 lat
- Ostatnio:4 miesiące
- Postów:2420
- Na serwisie.
- Często
readOnly = true
to no-op i ani niczego nie pilnuje, ani nic nie zmienia. Sprawdź jak się z twoim "dostawcą" JDBC zachowa...


- Rejestracja:około 21 lat
- Ostatnio:prawie 3 lata
- 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:około 17 lat
- Ostatnio:około 12 godzin
- Postów:1873
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:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:69
"Transactional w warstwie serwisu czy dao"
@Transactional
? Nigdzie.
Transakcje pisane "ręcznie", kodem

- Rejestracja:około 6 lat
- Ostatnio:około 12 godzin
- 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:ponad 9 lat
- Ostatnio:3 miesiące
- 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