Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Onde entra a questão do setAutoCommit(); commit(); e rollback(); numa classe DAO?

Sei que a mesma dúvida foi apresentada por outro aluno mas ela ainda persiste.

Onde entra a questão do setAutocommit(); commit(); e rollback(); numa classe DAO? Poderíamos incluí-los da mesma forma nos métodos de escrita?

Uma outra dúvida seria: Eu poderia colocar o código que abre a conexão ( try (Connection connection = new ConnectionFactory().recuperarConexao() ) dentro de cada método da classe ProdutoDao ao invés de colocá-lo na classe teste? Assim cada método já abriria e fecharia a conexão com o banco.

2 respostas
solução!

Olá Rafaell. Tudo bom? O setAutocommit(); commit(); e rollback(); funcionam em cenários onde há contexto transacional. Um contexto transacional ocorre quando mais de uma operação (insert, update) devem ocorrer juntas. Caso as duas funcionem corretamente, a transação é commitada, caso uma delas (ou as duas) deem errado, há o rolback da transação. Ou funciona tudo ou não funciona nada. Você pode incluí-los em um método de escrita, desde que faça sentido este cenário acima.

Quanto a questão da abertura de conexão, você até pode abrir dentro de cada método, mas vamos pensar no seguinte cenário. Eu quero chamar dois métodos juntos (inserirProduto, alterarProduto). Como citado antes, uma transação ocorre quando estamos encadeando duas chamadas e seria o cenário proposto nessa chamada dos dois métodos. Porém, como cada um dos métodos abre uma conexão com o banco, não seria possível realizar a transação, pois cada método abre uma conexão com banco, logo seriam duas operações distintas.

O ideal é avaliar cada cenário para estas tomadas de decisão. =)

Certo, entendido! Muito obrigado!