CDI @Transational

4 respostas
java
F
Pessoal bom dia,

Estou estudando CDI com EJB e JPA, WildFly minha dúvida é pq preciso colocar a anotação

@Transactional

public void remover(T t){

entityManager.remove(t);

}

Para que haja o commit??? Pelo que li a respeito, essa anotação é para apenas garantir a integridade de tudo aquilo que está dentro da transaçãoO que de certa forma é redundante. Mas não consegui ainda captar

4 Respostas

darlan_machado

O CDI não implementa transações, por isso você precisa da anotação @Transactional, que é parte da especificação JTA.

Redundante em que aspecto?

F

ué, mas se não implementa as transações, pq as consultas, os selects são executados? Redundante, pois o Banco de dados já garante a atomicidade das transações.

darlan_machado

Mas estas transações não são as mesmas transações do banco de dados.
Você tem a atomicidade no banco de dados (depende do SGBD que usa, claro), mas, que garantias você tem que os dados que estão transitando no servidor estão íntegros?
É por esta razão que temos o JTA e é por isso que ele precisa ser utilizado.

F

Mas de quais transações estamos falando? Talvez, estejamos falando de coisas diferente. Eu me refiro a isso,por exemplo manager. find(Class.class, id), isto não seria uma transação?

Criado 4 de abril de 2018
Ultima resposta 6 de abr. de 2018
Respostas 4
Participantes 2