A avaliação on -line de três pools de conexão é a seguinte:
O C3P0 é mais consumidor de recursos e pode ser um pouco menor em termos de eficiência.
Existem bugs no DBCP na prática e, em alguns casos, muitas conexões vazias não podem ser liberadas. O Hibernate 3.0 desistiu de seu apoio.
A Proxool possui menos revisões negativas e é recomendada agora e também fornece monitoramento instantâneo do status do pool de conexões para facilitar o vazamento de conexão.
Pool de conexão Proxool
<bean id = "proxool_dataSource"> <propriedade name = "driver class" value = "oracle.jdbc.driver.oracledriver"/> <propriedade name = "driver-url" value = "jdbc: oracle: thin: @localHost: 1521/ssid"/> <weene Nome = "" " <!-Declaração de execução do SQL para teste-> <propriedade name = "HOMES TAPEEPINGTESTSQL" value = "Selecione Current_Date"/> <!-O número mínimo de conexões ociosas mantidas (padrão 2)-> <Nome da propriedade "Dissetnis (PrototypeCount" Value = "2"/> <!-Proxool deteta automaticamente. Se a conexão ociosa for detectada, ela será reciclada imediatamente. The timeout destruction defaults to 30 seconds) --> <property name="houseKeepingSleepTime" value="30"/> <!-- Maximum activity time (threads exceeding this time will be killed, default is 5 minutes) --> <property name="maximumActiveTime" value="300"/> <!-- Maximum connection time (default 4 hours) --> <property name="maximumConnectionLifetime" value = "30"/> <!-Número mínimo de conexões (padrão 2)-> <propriedade name = "MinimumConnectionCount" value = "10"/> <!-Número máximo de conexões (padrão 5)-> <nome da propriedade "MaximumConnectionCount" Value = "30/> <!-Maximum Name de conexões no mesmo tempo-> value = "10"/> </i bean>
Pool de conexão C3P0
<Beanid = "DataSource" Class = "com.mchange.v2.c3p0.combopooledDataSource" Destruir-method = "Close"> <PropertyName = "Driver" value = "oracle.jdbc.driver.oracledriver"/> <PropertyName = "jdbcurl" value = "jdbc: oracle: thin: @localhost: 1521/ssid"/> <PropertyName = "user" value = "user"/> <PropertyName = "senha" Value = "senha"/> <PropertyName = "InitialPoolsize" = "10"/"/> <PropertyName = "maxpoolsize" value = "100"/> </i bean> <!- As propriedades de configuração do C3P0, através dessas propriedades, vários controles eficazes podem ser realizados na fonte de dados: adquirir o concremento: quando a conexão no pool de conexão é usada, o C3P0 cria novas conexões em uma época; Aquisitemtemptos: Defina o número de tentativas repetidas de obter após a falha na obtenção de uma nova conexão do banco de dados, o padrão é 30; adquirenteDelay: o intervalo entre duas conexões, milissegundos de unidade, o padrão é de 1000; AutoComMitonClose: Quando a conexão é fechada, todas as operações não comprometidas são revertidas por padrão. O padrão é falso; AutomaticTestTable: O C3P0 criará uma tabela vazia chamada teste e usará sua própria instrução de consulta para teste. Se este parâmetro for definido, a propriedade PreferredTestQuery será ignorada. Você não pode fazer nada nesta tabela de teste, ela será usada para testes C3P0, padrão para NULL; Breakafteracquirefailure: A falha em obter a conexão fará com que todos os threads aguardem para que a conexão jogue exceções. No entanto, a fonte de dados ainda é válida e continua tentando obter a conexão na próxima vez que você ligar para getConnection (). Se definido como true, a fonte de dados declarará que foi desconectada e fechada permanentemente após tentativas fracassadas de obter a conexão. O padrão é falso; CheckoutTimeout: Quando o pool de conexão é usado, o cliente chama getConnection () e aguarda o tempo para obter a nova conexão. Após o tempo limite, o SQLEXCECTION será jogado. Se definido como 0, ele esperará indefinidamente. Milissegundos de unidade, o padrão é 0; ConnectionTesterClassName: Conexões de teste implementando o ConnectionTester ou QueryConnectionTester, o nome da classe deve ser definido como um nome totalmente qualificado. O padrão é com.mchange.v2.c3p0.impl.defaultConnectionTester; IdleConnectionTestPeriod: Quantos segundos são necessários para verificar as conexões ociosas em todos os pools de conexão, o padrão é 0 para indicar que ele não é verificado; InitialPoolSize: O número de conexões criadas durante a inicialização deve ser avaliado entre MinPoolSize e MaxpoolSize. O padrão é 3; MAXIDLETIMA: Tempo máximo de marcha lenta, as conexões que excedem o tempo ocioso serão descartadas. Se for 0 ou negativo, nunca será descartado. O padrão é 0; MaxpoolSize: O número máximo de conexões retido no pool de conexões. O padrão é 15; Maxstatements: O parâmetro padrão do JDBC, usado para controlar o número de estatamentos preparados carregados na fonte de dados. Mas porque a instrução PRECACHE pertence a uma única conexão em vez de todo o pool de conexão. Portanto, definir esse parâmetro requer considerar muitos fatores. Se o Maxstatements e o MaxStatementsPerConnection forem 0, o cache será fechado. O padrão é 0; MaxstatementsPerConnection: o número máximo de declarações em cache que uma única conexão no pool de conexões possui. O padrão é 0; NumHelPerThreads: C3P0 é operado de forma assíncrona e as operações lentas do JDBC são concluídas através do processo de ajuda. A extensão dessas operações pode melhorar efetivamente o desempenho e várias operações são executadas simultaneamente através de vários threads. O padrão é 3; PreferredTestQuery: define a declaração de teste de que todos os testes de conexão são executados. Este parâmetro pode melhorar significativamente a velocidade de teste ao usar testes de conexão. A tabela testada deve existir no momento da fonte de dados inicial. O padrão é nulo; PropertyCycle: o número máximo de segundos para aguardar antes que o usuário modifique os parâmetros de configuração do sistema. O padrão é 300; TestConnectionOncheckout: use -o apenas quando necessário devido ao consumo de alto desempenho. Se definido como true, sua validade será verificada em cada envio de conexão. Recomenda -se usar o IDleConnectionTestperiod ou AutomaticTestTable para melhorar o desempenho dos testes de conexão. O padrão é falso; TestConnectionOncheckin: Se definido como true, a validade da conexão será verificada durante a obtenção da conexão. O padrão é falso. ->
Pool de conexão DBCP
<Beanid = "dbcp_dataSource" class = "org.apache.commons.dbcp.basicdataSource"> <er propertName = "driverClassName" value = "oracle.jdbc.driver.oracledriver"> </propriedade> <PropertyName = "url" value = "JDBC: Oracle: Thin: @localhost: 1521/ssid"> </property> <PropertyName = "UserName" Value = "User"> </Property> <PropertyName = "senha" "=" senha "> </erourend> <PropertyName =" Initialsize "= =" 3 senha "3 senha"> </souured> <PropertyName = "Initialsize" = = = "3" 3 senha ">" <PropertyName = "maxactive" value = "50"> </ouse> <PropertyName = "maxactive" value = "50"> </Property> <PropertyName = "maxidle" value = "20"> </propriedade> <propriedadeName = "Minidle" "5" 5) </propriedadeName = "" MaxwaT = ") Descrição Initialsize: Número inicial de conexões Ao inicializar o pool de conexão MaxActive: Valor máximo do pool de conexão Maxidle: Valor de Idle máximo Minidle: Valor inativo mínimo Maxwait: Estabelecimento de conexão máxima Tempo de espera ->