@Transactional

Entendendo 

Transação

Cenário

Passos

1. Verifica se tem assento disponível

Passos

2. Ocupa assento

Passos

3. Pagamento do ticket do cinema

Passos

4. Entrega do ticket do cinema

TRANSAÇÃO

Software

+ Seguro 

-Inconsistência

Transação em 4 palavras

ATOMICO

CONSISTÊNTE

ISOLADA

DURÁVEL

 

ACID

Formas de trabalhar

Programática vs Declarável

Title Text

@Transactional

@Transactinal
public class Atividade{

    public void atividade1(){...}
    public void atividade2(){...}
    public void atividade3(){...}

}

@Transactional

@Transactinal
public class Atividade{

    public void atividade1(){...}
    public void atividade2(){...}
    public void atividade3(){...}

}

@Transactional

PARAMETROS

  1. ISOLATION.: 

  2. PROPAGATION.: 

  3. TIMEOUT.: 

  4. READ-ONLY.: 

 

@Transactional(readOnly=true )
public void atividade1(){...}
@Transactional(timeout=0)
public void atividade1(){...}
@Transactional(propagation=Propagation.REQUIRED)
public void atividade1(){...}
@Transactional(isolation=Isolation.Default)
public void atividade1(){...}

PARAMETROS

Exemplo

Subtitle

@Autowarid
private PagamentoHelper pagamentoHelper;

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void send(final Collection<OcorrenciaAgendamento> ocorrencias) throws Exception {
    
   for(Ocorrencia ocorrencia : ocorrencias){
     pagamentoHelper.gerarPagamento(ocorrencia)
   }

}

Exemplo

Subtitle


public class PagamentoHelper {

    @Transactional(propagation = Propagation.REQUIRED_NEWS) 
    public void gerarPagamento(Ocorrencia ocorrencia){
        {...}
    }
}

Exemplo

Illegal attempt to associate a collection with 
two open session

Obrigado!

Referências

http://docs.spring.io/spring/docs/4.2.2.BUILD-SNAPSHOT/javadoc-api//org/springframework/transaction/annotation/Transactional.html

http://www.devmedia.com.br/conheca-o-spring-transactional-annotations/32472

@Transactional

By Eric Guilherme

@Transactional

  • 342