Java · Intermediário · Português · Técnico
anotação Transactional
Anotação do Spring que executa o método dentro de uma transação: abre no início, confirma no fim e desfaz se houver exceção não verificada.
Onde usar
Aparece em serviços que gravam em mais de uma tabela. Em review: 'a transação cobre as duas gravações?'.
Em código
@Service
class TransferenciaService {
@Transactional
public void transferir(long de, long para) {
debitar(de);
creditar(para); // falhou: desfaz os dois
}
}Exemplos
Põe o Transactional no método para as duas gravações irem juntas.
O rollback não aconteceu porque a exceção era checked.
Cuidado
Chamar outro método da mesma classe (this.outro()) não passa pelo proxy e ignora a anotação. Por padrão, só RuntimeException provoca rollback.
Sinônimos
@Transactional