transações em java

12 respostas
R

Olha com certeza deve ter, mas eu não sei como faz para abrir controlar transações em Java.
Eu ja sei executar as SQLs no problem, mas não sei como eu faço para dar um commit, rollback, etc…

12 Respostas

_

Quer saber sobre transações sem envolver sgbds?

D
connection.setAutoCommit(false);

// faça seus inserts aqui

connection.commit();

/// se der pau
connection.rollback();
W

Não sei se o java gerencia isto, mas nem todos bancos de dados possuem transações…
Acho q o MS Access por exemplo naum possui transação… pelo menos até o 97… hehehehe

L

Daniel, ficaria assim?

try {
    //Considere q eu já tenha declarado e instânciados meus objetos necessários

    connection.setAutoCommit(false);

    preparedStatement = connection.prepareStatement( "INSERT INTO mytable (name, age) VALUES (?, ?)" );
    int result = preparedStatement.executeUpdate();

    connection.commit();
    
} catch( Exception e ) {
    connection.rollback();
}

Valeu!

R

Valeu pessoal, tiraram minha dúvida!
Este fórum é o que há!

D

Isso.

E um:

finally { connection.close(); }

L

danieldestro:

E um:

finally { connection.close(); }

Oh, sim! Esqueci de fechar a conexão com finally. :wink:

Mais uma dúvida: Esse controle quem faz é a própria linguagem, ou seja, isso é independente do banco, não é?

Valeu!

D

Errado!

Isso é a interface para que o banco execute o seu controle de transação (se houver).

P

2 cents:

JTA
Using JTA

C

Só uma pergunta…

Eu tenho aqui na minha aplicação java muitos beans. A aplicação é utilizada com grande frequência. Acontece que, há uns tempos para cá, as pessoas que a usam queixam-se que o tomcat “morre”, sendo necessário parar o tomcat, matar todos os processos java e reiniciar o tomcat.

Andei-me a informar sobre o que poderia ser, e uma das hipóteses era ter PreparedStatemets que não estavam a ser fechados. Procurei na aplicação toda se isso poderia acontecer. De facto, encontrei alguns métodos, onde os PreparedStatements não estavam a ser fechados. Depois de ter isso corrigido, o problema continuou.

A minha pergunta é:

Há alguma forma de fechar todas as ligações que estejam abertas de uma só vez, para evitar ter que andar, novamente, classe a classe, método a método à procura de PreparedStatements que não estejam a ser fechados?

É que, ainda por cima, aqui, onde estou (Portugal), a aplicação de testes não “morre”, mas em produção (Angola), onde é constantemente a ser utilizada, é que há estes problemas. E a ligação à Internet de lá não é grande coisa…

Outra questão que tenho. Quando a aplicação “morre”, há possibilidade de saber o que se passa nos logs do tomcat?

Sei que são muitas perguntas, mas estou mesmo “à rasca” com isto :?

Obrigado

camurso_

L

Sim, derrube teu banco de dados e o tomcat, e faça o deploy completo da aplicação denovo. ;D Hehehehehe, acho que realmente é melhor se fazer do jeito correto, você abriu uma conexão, feche-a. Abriu um preparedStatement, feche-o, até teus resultSets, feche-os. Mas Se você fechar uma conexão, ela vai fechar todos os recursos dela, ou seja, todos os Statements que também por sua vez, fechará todos os recuros (talvez os resultsets) que também manterem vínculos com ele. Mas, se for para fazer direitinho, não se esqueca de fechar tudo mesmo.

w00t!

Sim, o tomcat gera logs na pasta logs/ dentro dele (no linux, algumas distros na hora de instalar mapeiam isto para /var/logs).

L

OI PESSOAL sou novato nesse assunto e queria uma ajuda. Estou em duvida entre comprar um V300 Motorola e um siemens CX65. Qual dos dois vale mais a pena comprar em relação À câmera? por favor respondam

Criado 19 de maio de 2005
Ultima resposta 1 de jun. de 2005
Respostas 12
Participantes 9