Sobes.tech
Junior — Middle

Como é que se pode modificar a funcionalidade da anotação @Transactional no Spring para alcançar os resultados desejados?

sobes.tech IA

Resposta da IA

A anotação @Transactional no Spring gere transações ao nível de métodos ou classes. Para modificar o seu comportamento, pode usar os parâmetros da própria anotação ou criar aspetos personalizados.

Principais formas de modificação:

  • Parâmetros da anotação:

    • propagation — define o comportamento de transações aninhadas.
    • isolation — nível de isolamento das transações.
    • timeout — tempo de espera para a transação.
    • readOnly — otimização para operações apenas de leitura.
    • rollbackFor e noRollbackFor — indicam quais exceções devem fazer a transação reverter ou não.
  • Criação de um aspeto próprio: Pode escrever um aspeto usando Spring AOP, que interceptará chamadas de métodos e adicionará lógica adicional em torno das transações.

Exemplo de uso de parâmetros:

@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
public void someMethod() {
    // código
}