Escolar Documentos
Profissional Documentos
Cultura Documentos
JDBC
19 de maio de 2017
Por Manoj Debnath
Enviar email "
Mais artigos »
Tweet
O pool de conexão é um mecanismo para criar e manter uma coleção de objetos de conexão
JDBC. O principal objetivo de manter o pool de objetos de conexão é aproveitar a
reutilização. Um novo objeto de conexão é criado somente quando não há objetos de conexão
disponíveis para reutilização. Esta técnica pode melhorar o desempenho geral da
aplicação. Este artigo tentará mostrar como este mecanismo de agrupamento pode ser
aplicado a um aplicativo Java .
Mas, quando o DataSource usa pooling de conexão, a pesquisa retorna uma conexão do pool
de objetos de conexão disponíveis. Se não houver conexão disponível, a pesquisa cria uma
nova conexão. O aplicativo estabelece uma conexão ao banco de dados e acessa os dados da
maneira usual.
Artigos relacionados
Novos recursos principais no Java 8
Comece Usando Java Lambda Expressions
Como contratar um desenvolvedor Java
Uma vez que o aplicativo é feito com a atividade do banco de dados, ele fecha explicitamente a
conexão. Isso torna a conexão liberada novamente disponível para reutilização. O evento de
encerramento da conexão agrupada sinaliza o módulo de pool para restaurar novamente para
o pool de conexão. Como a reutilização do objeto de conexão não requer alterações de código,
é mais rápido que criando uma nova conexão.
A API JDBC 3.0 fornece a estrutura geral para o agrupamento de conexões. Vários
fornecedores terceirizados foram construídos com base nessa estrutura, implementando seus
próprios algoritmos de armazenamento em cache ou de pool. A estrutura geral da API JDBC
fornece três ganchos sob a forma de interfaces, sobre os quais vários fornecedores
terceirizados implementaram sua biblioteca de pool de conexão. Eles são:
PooledConnection
ConnectionPooledDataSource
ConnectionEventListener
Consulte a documentação da API Java para obter uma descrição elaborada nessas
interfaces. Não vamos entrar nos detalhes aqui; Em vez disso, vamos nos concentrar em como
implementar um mecanismo de pool de conexão em um aplicativo Java. Como mencionado
anteriormente, existem muitas bibliotecas de terceiros disponíveis,
como C3P0 , UCP , BoneCP , H2 , DBCP e assim por diante. Aqui, nos concentramos em
apenas um deles.
O que precisamos para os seguintes exemplos
O seguinte exemplo será um aplicativo Java autônomo mínimo. O banco de dados que
usaremos é o MySQL. Portanto, precisamos
c3p0 é uma biblioteca fácil de usar para fazer drivers JDBC tradicionais "prontos para
empresas", aumentando-os com a funcionalidade definida pela especificação jdbc3 e as
extensões opcionais para jdbc2. A partir da versão 0.9.5, o c3p0 suporta totalmente a
especificação jdbc4.
Uma classe que adapta drivers tradicionais JDBC baseados no DriverManager para o
novo esquema javax.sql.DataSource para adquirir conexões de banco de dados.
Armazenamento transparente de conexões e declarações preparadas por trás de
DataSources que podem "envolver" em torno de drivers tradicionais ou fontes de
dados arbitrárias e não colocadas.
Ele é projetado para ser simples e só precisa de dois arquivos de jar:
c3p0.xxxxjar
mchange-commons-java-xxxjar
Esses jarros precisam estar no CLASSPATH, além do driver MySQL JDBC.
package org.mano.example;
importar java.beans.PropertyVetoException;
importar java.sql.Connection;
importar java.sql.SQLException;
importar com.mchange.v2.c3p0.ComboPooledDataSource;
private C3P0DataSource () {
try {
comboPooledDataSource = novo ComboPooledDataSource ();
comboPooledDataSource
.setDriverClass ("com.mysql.jdbc.Driver");
comboPooledDataSource
.setJdbcUrl ("jdbc: mysql: // localhost: 3306 / testdb");
comboPooledDataSource.setUser ("root");
comboPooledDataSource.setPassword ("segredo");
catch (PropertyVetoException ex1) {
ex1.printStackTrace ();
}
}
package org.mano.example;
importar java.sql.Connection;
importar java.sql.PreparedStatement;
importar java.sql.ResultSet;
importar java.sql.ResultSetMetaData;
importar java.sql.SQLException;
importar java.sql.Statement;
catch (SQLException e) {
e.printStackTrace ();
}
}
Saída
-------------------------------------------------- --------------
ISBN TÍTULO EDIÇÃO PREÇO
-------------------------------------------------- --------------
456789 Gráfico Teoria Segundo 33.8
567890 Set Theory Fourth 34.89
-------------------------------------------------- --------------
-------------------------------------------------- --------------
ISBN TÍTULO EDIÇÃO PREÇO
-------------------------------------------------- --------------
111111 Números complexos segundo 56,78
456789 Gráfico Teoria Segundo 33.8
567890 Set Theory Fourth 34.89
-------------------------------------------------- --------------
-------------------------------------------------- --------------
ISBN TÍTULO EDIÇÃO PREÇO
-------------------------------------------------- --------------
111111 Números complexos quarto 87.5
456789 Gráfico Teoria Segundo 33.8
567890 Set Theory Fourth 34.89
-------------------------------------------------- --------------
-------------------------------------------------- --------------
ISBN TÍTULO EDIÇÃO PREÇO
-------------------------------------------------- --------------
456789 Gráfico Teoria Segundo 33.8
567890 Set Theory Fourth 34.89
-------------------------------------------------- --------------
Conclusão
O pool de conexão é particularmente adequado para otimizar o desempenho em um ambiente
de alta carga onde um pedido de conexão é descartado ou atrasado. Este tipo de situação tem
um impacto adverso no desempenho geral da aplicação. Na verdade, ao criar um aplicativo
JDBC Web ou empresarial, é sempre uma prática usar pools de conexão por todos os motivos
práticos. As bibliotecas de terceiros são praticamente estáveis e capazes de fornecer o que
reivindicam. Compreender o conceito de conexão de pool e ser capaz de implementá-los é uma
obrigação para todos os programadores JDBC.