public interface Service {
void forcedTransactionalMethod();
@Transactional
void questionableTransactionalMethod();
}
public class ImplementedService implements Service {
private DummyDao dao;
public void setDao(DummyDao dao) {
this.dao = dao;
}
@Transactional
public void forcedTransactionalMethod() {
dao.getJdbcTemplate().update("INSERT INTO PERSON (NAME) VALUES ('ME')");
}
public void questionableTransactionalMethod() {
dao.getJdbcTemplate().update("INSERT INTO PERSON (NAME) VALUES ('YOU')");
}
}
@Transactional jakie podejście jest lepsze i dlaczego?
- Rejestracja: dni
- Ostatnio: dni
- Postów: 100
0
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Space: the final frontier
- Postów: 26433
4
Pozbyć się adnotacji, użyć transactionTemplate skoro już używasz jdbcTemplate albo w ogóle nic nie robić tutaj, bo i tak masz tu jedno query więc transakcja średnio potrzebna.
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Silesia/Marki
- Postów: 5549
2
Ale najlepsze podejście to nie używać @Transactional
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3755
1
@Transactional to szczegół implementacyjny. Przykładowo - tworzysz implementację taką, że @Transactional jest bez sensu (np. zamiast zabawy po stronie aplikacji przenosisz logikę do bazy danych) - i wtedy zostajesz z tą nieszczęsną transakcją.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 3561
2