Transacoes ACID com API JDBC do Java é possivel?

Pessoal, fiquei sabendo da existencia dessas Transações folheado um livro sobre SQL hoje… e vi na net alguns artigos e achei SUPER INTERESSANTE, porem…
Nao ficou bem claro ainda pra mim o funcionamento…

As transacoes sao feitas onde? No banco? ou com a linguagem de programacao?
E como é feito utilizando a API? É possivel?

agradeco :smiley:

ACID são características do sistema gerenciador de banco de dados, não da linguagem de programação. Eu afirmo inclusive que para poder se dizer que é sistema gerenciador de banco de dados puro sangue tem que garantir essas quatro características completamente (além de outras coisas).

A API JDBC provê um meio de conectar-se ao banco para acessar e manipular os dados. Seria vamos dizer assim o que é o ODBC oferecido pela Microsoft, só que com o poder de rodar em qualquer plataforma. Nesse momento por exemplo estou trabalhando com metadados, que explora a estrutura do banco(nomes de tabelas, de campos, os tipos de dados)…

Sucesso nos estudos. Tem muita coisa interessante aí.

E como eu posso fazer transacos com a API?

“start transaction”
“commit”
"roolback

ja vi que existe uma funcao especifica pra roolback e commit na documentacao mas nao tem o “start transaction”

Na API de JDBC, se você usar:

connection.setAutoCommit(false);

Todos os comandos SQL de insert, update ou delete já estarão dentro de uma transação, que só será finalizada ao se chamar o commit ou rollback

[quote=rogelgarcia]Na API de JDBC, se você usar:

connection.setAutoCommit(false);

Todos os comandos SQL de insert, update ou delete já estarão dentro de uma transação, que só será finalizada ao se chamar o commit ou rollback[/quote]

entao so confirmando… quer dizer que quando eu uso um EXECUTE eu tbm estou fazendo um COMMIT “por debaixo do tapete”? rs :lol:

Em verdade o que o colega quis dizer foi que setanto o AutoCommit com false você assume a responsabilidade de dar o commit quando quiser. Nessas condições, se você só der um execute e fechar a conexão a transação é desfeita. Dos poucos bancos que usei jdbc, o AutoCommit vem definido como true por padrão, o que faz com que o commit aconteça como você disse “por baixo do tapete”