@Transactional jakie podejście jest lepsze i dlaczego?

0
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')");
  }
}
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.

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ą.

1

1 użytkowników online, w tym zalogowanych: 0, gości: 1