Pessoal, existe um Design Patter chamado “Singleton” cujo objetivo é assegurar que uma classe tenha uma única instância e prover um ponto de acesso global a esta instância …
Este padrão seria o ideal para uso com a classe que controla o acesso/conexao com banco de dados certo ??? Ou nao ???
Bem … como usar o Singleton em uma classe para conexao a banco ?
Cara, eu uso essa classe que eu criei (para conexão com pool). Ela não é singleton mas acho que é mais interessante de ser usada. Eu costumo não instanciar as classes que retornam conexão, acho mais legal usar métodos estáticos.
import java.sql.*;
import java.util.*;
import org.postgresql.jdbc3.*;
abstract public class AcessoBD {
// As configurações são feitas com os atributos estáticos
// host, ou ip, do servidor
private static final String SERVER = "255.255.255.255";
// nome da base de dados
private static final String DATA_BASE = "bd1";
// número máximo de conexões
private static final int MAX_CONNECTIONS = 100;
// número inicial de conxões
private static final int INITIAL_CONNECTIONS = 15;
// O pool em si
private static Jdbc3PoolingDataSource pool = null;
// nome do usuário
private static final String USER = "postgres";
// senha do usuário
private static final String SENHA = "senha";
// Função que retorna a conexão
public static final Connection getConexao()
throws SQLException {
// Se o pool não foi instanciado então a função de instanciar
// é chamada
if (pool == null) {
iniciarPool();
}
Connection conexao = pool.getConnection();
conexao.setAutoCommit(true);
return conexao;
}
// Função que instancia o pool
private static final void iniciarPool ()
throws SQLException {
pool = new Jdbc3PoolingDataSource();
pool.setServerName(SERVER);
pool.setDatabaseName(DATA_BASE);
pool.setUser(USER);
pool.setPassword(SENHA);
pool.setMaxConnections(MAX_CONNECTIONS);
pool.setInitialConnections(INITIAL_CONNECTIONS);
}
}