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

[Dúvida] - Pool de Conexões (replicar em banco MySQL o que foi ensinado com HSQLDB)

Senhores, fiquei com dúvida com relação em como aplicar o conceito de pool de conexões com o MySQL. Ele não segue o mesmo padrão do HSQLDB, com uma classe tipo JDBCPool. Tenho uma aplicação Desktop com Swing e JDBC conectando a um banco MySQL. Como procedo para fazer usufruto do pool de conexões com MySQL via desktop?

5 respostas

Oi Daniel,

A forma de fazer o Pool é igual, segue o exemplo :

JDBCPool pool = new JDBCPool();
        pool.setUrl("jdbc:mysql://localhost/loja-virtual");

Era essa a sua dúvida ?

Fala Caio, obrigadão pelo post! Então, mas não encontro a classe JDBCPool do MySQL, essa classe é específica do HSQLDB. Ao menos quando busco essa classe, vejo que ela está em um pacote do HSQLDB, seria isso mesmo então? Usar essa classe do HSQLDB para qualquer base? Pois pelo que entendi, cada biblioteca de JDBC para cada base, deveria possuir a sua implementação da classe JDBCPool, não seria isso?

De acordo com a documentação da classe na página do HSQLDB, segue tal informação:

public class JDBCPool extends JDBCCommonDataSource implements DataSource, Serializable, Referenceable, ConnectionEventListener, StatementEventListener, Wrapper

HSQLDB-Specific Information:

A connection pool for HyperSQL connections. This implementation of DataSource is dedicated to HyperSQL and guarantees all connection states are automatically reset when a connection is reused.

The methods of the parent class, JDBCCommonDataSource are used to specify the database URL, user, password, and / or connection properties.
solução!

Oi Daniel

Você está correto, falha minha!

Para fazer um pool eu recomendo usar o C3PO, é um biblioteca que é bastante popular que implementa o DataSource, você tem outras opções também ( apache DBCP por exemplo)

Para fazer o download:

https://sourceforge.net/projects/c3p0/files/latest/download

depois de baixar você vai precisar de 2 jars :

mchange-commons-java-0.2.11.jar c3p0-0.9.5.2.jar

Você vai precisar jogar esses 2 caras no projeto e adiciona-los (clicar com o direto no jar e ir Build Path > add to library.

Segue o código usado para criar uma conexão :

ComboPooledDataSource ds = new ComboPooledDataSource();
        ds.setDriverClass("com.mysql.jdbc.Driver");
        ds.setUser("<Usuário>");
        ds.setPassword("<SEnha>");
        ds.setJdbcUrl("jdbc:mysql:<caminhoDoSeuBanco>");
        ds.setUnreturnedConnectionTimeout(60);
        ds.setDebugUnreturnedConnectionStackTraces(true);
        ds.setMaxPoolSize(20);
        ds.setMinPoolSize(5);
        ds.setInitialPoolSize(5);
        ds.setMaxIdleTime(1800);
        ds.setMaxConnectionAge(1800);

Se possível, tenta dar um a lida rápida na documentação do c3po:

http://www.mchange.com/projects/c3p0/#what_is

Você pode isolar isso em uma classe e dar um new nos DAOS que você for usar.

Tenta fazer isso, qualquer coisa você responde aqui.

abraço!

Muito obrigado pela ajuda Caio!!! Valeus!!!