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

Try no Connection

Pessoal , gostaria de saber se quando uso try no getConnection herdando de outra classe ele fecha inclusive o Statement ? segue abaixo o código

try (Connection connection = DataBase.getConnection())

package br.com.caelum.jdbc;

import java.sql.*;

public class TestaDelete {

public static void main(String[] args) throws SQLException {

try (Connection connection = DataBase.getConnection()){

Statement statement = connection.createStatement(); statement.execute("delete from produto where id > 3");

int count = statement.getUpdateCount();

System.out.println(count + " linhas atualizadas"); }

}

}

3 respostas

Oi Rafael,

a documentação não está clara se um connection.close() realmente fecha os Statement ou não.

Boa prática é sempre fechar o Statement e não confiar no close da Connection. Por exemplo, se vc usa um Pool de conexões, ninguem vai chamar close pois a conexão será reaproveitada. Nesse momento vc precisa garantir que o seu Statement foi fechado.

Abs

http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html

http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html

http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html

Essas três interfaces estende do AutoCloseable, minha duvida é seguinte:

quando executo o código abaixo:

try (Connection connection = DataBase.getConnection())

o AutoCloseable não fecha sozinho o Statement, Resultset, Connection...

Sei que é uma boa pratica fechar, porém queria saber se isso também funciona!

solução!

Entao a documentação nao deixa claro isso.

abs