Jak radzić sobie z transakcjami jeśli używamy Eithera z Vavr? Załóżmy, że w naszym serwisie korzystamy z jakiegoś innego serwisu, który zamiast rzucać wyjątki zwraca jakiś Either<AppError/Exception, DTO> no i jeśli zwróci ten AppError czy nawet Exception to chcielibyśmy, żeby nastąpił rollback. Zakładam też, że raczej używamy Springa i JPA. Pytanie w szczególności do @jarekr000000.
Wyjątki, transakcje i Either
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: U krasnoludów - pod górą
- Postów: 4712
1
Jeżeli używamy Springa i JPA to zabawa w Either traci dużo z sensu.
Zabawa w Exceptiony i rollbacki w springu/jpa jest pełna absurdów i pułapek i Either nic w tym nie pomaga, a nawet przeszkadza.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 94
0
jarekr000000 napisał(a):
Jeżeli używamy Springa i JPA to zabawa w
Eithertraci dużo z sensu.
Zabawa w Exceptiony i rollbacki w springu/jpa jest pełna absurdów i pułapek iEithernic w tym nie pomaga, a nawet przeszkadza.
A masz gdzieś kod do tej transakcji w formie monady?
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: U krasnoludów - pod górą
- Postów: 4712
1
Sampeteq napisał(a):
A masz gdzieś kod do tej transakcji w formie monady?
Mam w kotlinie,
ale w javie to brałem z blogów i sobie rozwijałem:
https://gtrefs.github.io/code/refactoring-towards-a-transaction-monad/
Przy czym zupełnie niezależna lekcja - warto wywalić JPA i przejść na JOOQ lub JDBI.