Conexão com banco.. duvída ao não fechar

2 respostas
kina

O que acontece com a minha conexão caso eu a abra e não a feche?
por exemplo:

public void fazAlgo(){
	Class.forName("meu.jdbc.Driver").newInstance();
	Connection c = DriverManager.getConnection("url","usr","pass");
	PreparedStatement p = c.preparedStatement("sql qqer");
	p.execute();
}

A minha conexão fica no “limbo”??
Ela é fechada sozinha???
Valeu

2 Respostas

danieldestro

Ela fica pendurada no banco de dados, e se outras não se fecharem, elas vão se acumulando até minar os recursos do BD e sua aplicação pára de responder (“cai”).

Foi o que aconteceu com uma app aqui, que eu tvie que sair nos fontes caçando recursos sem .close();

T

Como você deve saber, tanto Connection quanto PreparedStatement são interfaces (não classes) que são implementadas pelas classes do seu driver de JDBC. Pode ser que as classes tenham um método “finalize” que ao ser chamado eventualmente encerre a conexão (eu disse “pode ser”) e pode ser que esse método finalize acabe sendo chamado algum dia (eu disse “pode ser”). Como tem um monte de “pode ser” nessa minha declaração é melhor não achar que “vai ser”. Ou seja, por favor, feche as conexões sempre, não deixe toalhas molhadas em cima da cama e feche a tampa do sanitário depois de dar a descarga.

Criado 29 de junho de 2005
Ultima resposta 29 de jun. de 2005
Respostas 2
Participantes 3