Tentei adequar os exemplos do da aula 5 com o banco PostgreSQL. Minha classe Database ficou assim:
public class Database {
private PGConnectionPoolDataSource pool;
public Database() {
PGConnectionPoolDataSource pool = new PGConnectionPoolDataSource();
pool.setUrl("jdbc:postgresql://localhost:5432/postgres");
pool.setUser("postgres");
pool.setPassword("postgres");
this.pool = pool;
}
public Connection getConnection() throws SQLException {
System.out.println("Abrindo conexão com o banco de dados");
pool.getParentLogger();
//Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "postgres");
Connection connection = pool.getConnection();
return connection;
}
}
Método que retorna a listagem de produtos (modifiquei um pouco a tabela, pouco mesmo):
public static void main(String[] args) throws SQLException {
Connection connection = new Database().getConnection();
for (int i = 0; i<100;i++){
Statement statement = connection.createStatement();
statement.execute("select * from Produto");
ResultSet resultSet = statement.getResultSet();
while (resultSet.next()) {
int id = resultSet.getInt("id");
String titulo = resultSet.getString("titulo");
String descricao = resultSet.getString("descricao");
String paginas = resultSet.getString("paginas");
System.out.println("id=" + id + ", titulo=" + titulo + ", descricao=" + descricao+ ", paginas=" + paginas);
}
resultSet.close();
statement.close();
connection.close();
}
}
Recebo o seguinte erro:
Exception in thread "main" org.postgresql.util.PSQLException: This connection has been closed.
Contudo, na aula diz que ao fechar a conexão, ela é devolvida ao pool, e isso não ocorre. Sugestões?