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

Pra que usar o .getTransaction() ?

Olá glr,

Estava me perguntando do porque usar o .getTransaction().begin() e o .commit(), se mesmo sem eles o código funciona. Andei dando uma pesquisada e parece que a abertura e fechamento da transação é feito de maneira automática.

Vlw.

2 respostas
solução!

Fala César, tudo bem ?

Segundo a especificação JDBC quando conexões são abertas elas são autocommit by default (podem por padrão contar com begin e commit automático). Mas contando apenas com configurações automáticas (como nesse caso), imagine um cenário onde você está recuperando a conexão de um ConnectionPool de um DataSource, ou de algum outro Framework (onde a criação da conexão está em geral omitida do seu código). Somado a isso, imagine que o autoCommit esteja definido como false por algum desses frameworks. Nesses casos você pode ter problemas.

A ideia de definir getTransaction().begin() e getTransaction().commit é ter na sua mão o total controle de quando a transação está sendo iniciada e efetivada, não dependendo de qualquer configuração padrão que pode ser alterada por alguma outra ferramenta ou recurso. Usando como uma prática, você facilmente evita esses problemas. Talvez em casos mais simples isso pareça realmente não muito útil e o problema não muito grave hoje, mas acredite, daqui há um ano quando seu sistema já tiver passado por uma série de manutenções, trocado de/adicionado frameworks, data sources e outras soluções isso pode sair do controle e causar problemas em futuras manutenções.

Espero ter ajudado no pensamento. Abraço!

Ahhhh, entendi. Nos exercícios ele é ensinado como uma boa prática. Obg Rafael !