pool de conexão de banco de dados
Qual é o pool de conexão do banco de dados?
Em JDBC, e desligar cada vez que você criar um objeto de conexão irá consumir uma certa quantidade de tempo e recursos IO. Isso ocorre porque o programa java para estabelecer uma ligação entre o banco de dados, o lado do banco de dados para verificar o nome de usuário e senha, e para alocar recursos para este link, o programa java devem ser carregados na memória por conta de ligações entre objetos java.sql.Connection, etc. portanto, o estabelecimento de um link de banco de dados é caro, especialmente quando um grande número de acesso simultâneo, se visitas de um dia local é 100.000, em seguida, o servidor do site que você precisa para criar, desvincule 100.000 vezes, freqüentemente criar e off link de banco de dados aberto é obrigado a afetar a eficiência de acesso ao banco de dados, e pode até mesmo travar o banco de dados.
Para evitar a criação de um link de banco de dados com frequência, os programadores têm proposto a tecnologia de banco de dados de conexão piscina. pool de conexão do banco de dados é responsável pela distribuição, gestão e liberação de links de banco de dados, que permite que um aplicativo para reutilização ligação banco de dados existente, em vez de re-estabelecer
Legenda:
gráfico:
Como pode ser visto a partir da figura, o pool de conexão de banco de dados irá criar um link de banco de dados de inicialização de um certo número de conexões na piscina quando o programa aplicativo para acesso a banco de dados não é criado diretamente da conexão, mas o pool de conexão para "aplicar" uma conexão, conexão Se o pool de conexão tem livre, então ele é retornado, caso contrário, criar uma nova conexão. Após o uso, o pool de conexão de recuperação vontade Connection. E entregue a outros tópicos, a fim de reduzir o número de on e off para criar links de banco de dados, melhorar a eficiência de acesso ao banco.
DBCP fonte de dados
DBCP pool de conexão de banco de dados (banco de dados Connection Pool) suma, no open source Apache pool de conexão para alcançar o tecido, Tomcat pool de conexão é usada pelo componente de servidor, quando utilizado fonte de dados DBCP sozinho, necessidade de importar dois pacote jar na aplicação
- commons-dbcp.jar
- commons-pool.jar
Exemplo código:
código:
classe pública testDemo {
/ *
* Classe BasicDataSource BasicDataSource usando a classe para criar um objeto de fonte de dados, os dados de configuração valor da propriedade objeto de origem manual e, em seguida, obter um objeto de conexão.
* /
public static DataSource ds = null;
estática {
// Obter DBCP fonte de dados objeto classe de implementação
BasicDataSource bds = novo BasicDataSource ();
// definir as informações de configuração necessárias para conectar ao banco de dados
bds.setDriverClassName ( "com.mysql.jdbc.Driver");
bds.setUrl ( "jdbc: mysql: // localhost: 3306 / demonstração");
bds.setUsername ( "raiz");
bds.setPassword ( "123456");
// número de conjunto de parâmetros de pool da conexão elos da inicialização do pool de conexão do banco de dados
bds.setınitialsiz a (5);
// determinado número de ligações maior pool de conexão do banco de dados ativo
bds.setMaxActive (5);
ds = bds;
}
public static void main (String [] args) throws SQLException {
// Obter o objeto de link de banco de dados
conexão conn = ds.getConnection ();
// Obter o link de banco de dados informações
DatabaseMetaData metaData = conn.getMetaData ();
// link de banco de dados de informações de impressão
System.out.printlnl (metaData.getURL ());
}
}
C3P0 fontes de dados
C3P0 é um dos populares piscina mais conexão com o banco de código aberto, que implementa a interface DataSource para uma fonte de dados, e apoio JDBC2 JDBC3 de padrões, fácil expansão e desempenho superior, quadro bem conhecido de fonte aberta Hibernate e Spring são utilizados na fonte de dados. Ao desenvolver a fonte de dados usando C3P0, C3P0 necessidade de entender a classe implementação da interface ComboPooledDataSource DataSource, que é a classes principais C3P0, é fornecido um método de fonte de dados objetos relevantes
Exemplo código:
testDemo3 classe pública {
public static DataSource ds = null;
estática {
ComboPooledDataSource CPDS = novo ComboPooledDataSource ();
experimentar {
cpds.setDriverClass ( "com.mysql.jdbc.Driver");
cpds.setJdbcUrl ( "jdbc: mysql: // localhost: 3306 / demonstração");
cpds.setUser ( "raiz");
cpds.setPassword ( "123456");
cpds.setInitialPoolSize (5);
cpds.setMaxPoolSize (5);
ds = CPDS;
} Catch (exceção e) {
// TODO: exceção punho
throw new ExceptionInInitializerError (e);
}
}
/ **
* args @param
* @Throws SQLException
* /
public static void main (String [] args) throws SQLException {
// gerado Auto TODO stub método
System.out.printlnl (ds.getConnection ());
}
}