dbcp 系列
從零開(kāi)始手寫(xiě) mybatis (三)jdbc pool 如何從零手寫(xiě)實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池 dbcp?
萬(wàn)字長(zhǎng)文深入淺出數(shù)據(jù)庫(kù)連接池 HikariCP/Commons DBCP/Tomcat/c3p0/druid 對(duì)比
Database Connection Pool 數(shù)據(jù)庫(kù)連接池概覽
c3p0 數(shù)據(jù)池入門(mén)使用教程
alibaba druid 入門(mén)介紹
數(shù)據(jù)庫(kù)連接池 HikariCP 性能為什么這么快?
Apache Tomcat DBCP(Database Connection Pool) 數(shù)據(jù)庫(kù)連接池-01-入門(mén)介紹
vibur-dbcp 并發(fā)、快速且功能完備的 JDBC 連接池,提供先進(jìn)的性能監(jiān)控功能-01-入門(mén)介紹
c3p0 是什么?
c3p0是一個(gè)易于使用的庫(kù),通過(guò)使用jdbc3規(guī)范和jdbc2的可選擴(kuò)展定義的功能來(lái)擴(kuò)展傳統(tǒng)JDBC驅(qū)動(dòng)程序,從而使其“企業(yè)就緒”。
從0.9.5版開(kāi)始,c3p0完全支持jdbc4規(guī)范。
特別是c3p0提供了一些有用的服務(wù):
一個(gè)類(lèi),它使傳統(tǒng)的基于DriverManager的JDBC驅(qū)動(dòng)程序適應(yīng)最新的javax.sql.DataSource方案,以獲取數(shù)據(jù)庫(kù)連接。
DataSources后面的Connection和PreparedStatement的透明池可以“包裝”傳統(tǒng)驅(qū)動(dòng)程序或任意非池化DataSources。
該庫(kù)盡力使細(xì)節(jié)正確:
c3p0數(shù)據(jù)源既可引用也可序列化,因此適合綁定到各種基于JNDI的命名服務(wù)。
檢入池中的Connections和Statements時(shí),會(huì)仔細(xì)清理Statement和ResultSet,以防止客戶端使用僅清理其Connections的惰性但常見(jiàn)的資源管理策略時(shí)資源耗盡。
該庫(kù)采用JDBC 2和3規(guī)范定義的方法(即使這些與庫(kù)作者的首選項(xiàng)沖突)。
數(shù)據(jù)源以JavaBean樣式編寫(xiě),提供了所有必需和大多數(shù)可選屬性(以及一些非標(biāo)準(zhǔn)屬性)以及無(wú)參數(shù)構(gòu)造函數(shù)。
實(shí)現(xiàn)了所有JDBC定義的內(nèi)部接口(ConnectionPoolDataSource,PooledConnection,生成ConnectionEvent的Connection等)。
您可以將c3p0類(lèi)與兼容的第三方實(shí)現(xiàn)混合使用(盡管并非所有c3p0功能都可以與ConnectionPoolDataSource的外部實(shí)現(xiàn)一起使用)。
c3p0希望提供的數(shù)據(jù)源實(shí)現(xiàn)不適合大批量“ J2EE企業(yè)應(yīng)用程序”使用。請(qǐng)?zhí)峁┓答仯e(cuò)誤修復(fù)等!
入門(mén)例子
maven 導(dǎo)入
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
入門(mén)代碼
通過(guò)代碼顯式指定配置:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-840155.html
ComboPooledDataSource source = new ComboPooledDataSource();
source.setDriverClass("com.mysql.jdbc.Driver");
source.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");
source.setUser("root");
source.setPassword("123456");
//獲取鏈接
Connection connection = source.getConnection();
System.out.println(connection.getCatalog());
- 日志輸出
七月 17, 2020 4:58:21 下午 com.mchange.v2.log.MLog
信息: MLog clients using java 1.4+ standard logging.
七月 17, 2020 4:58:22 下午 com.mchange.v2.c3p0.C3P0Registry
信息: Initializing c3p0-0.9.5.5 [built 11-December-2019 22:18:33 -0800; debug? true; trace: 10]
七月 17, 2020 4:58:22 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1bqqx35abpix6b312lrdzj|7bfcd12c, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1bqqx35abpix6b312lrdzj|7bfcd12c, idleConnectionTestPeriod -> 0, initialPoolSize -> 2, jdbcUrl -> jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 30, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 2, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
test
通過(guò)配置文件
配置
- c3p0-config.xml
將該配置文件,置于 resources 文件夾下。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-840155.html
<c3p0-config>
<!-- 默認(rèn)配置,如果沒(méi)有指定則使用這個(gè)配置 -->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">
<![CDATA[jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8]]>
</property>
<property name="user">root</property>
<property name="password">123456</property>
<!-- 初始化池大小 -->
<property name="initialPoolSize">2</property>
<!-- 最大空閑時(shí)間 -->
<property name="maxIdleTime">30</property>
<!-- 最多有多少個(gè)連接 -->
<property name="maxPoolSize">10</property>
<!-- 最少幾個(gè)連接 -->
<property name="minPoolSize">2</property>
<!-- 每次最多可以執(zhí)行多少個(gè)批處理語(yǔ)句 -->
<property name="maxStatements">50</property>
</default-config>
</c3p0-config>
實(shí)現(xiàn)
ComboPooledDataSource source = new ComboPooledDataSource();
Connection connection = source.getConnection();
System.out.println(connection.getCatalog());
日志
七月 17, 2020 5:00:41 下午 com.mchange.v2.log.MLog
信息: MLog clients using java 1.4+ standard logging.
七月 17, 2020 5:00:41 下午 com.mchange.v2.c3p0.C3P0Registry
信息: Initializing c3p0-0.9.5.5 [built 11-December-2019 22:18:33 -0800; debug? true; trace: 10]
七月 17, 2020 5:00:42 下午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, contextClassLoaderSource -> caller, dataSourceName -> 1bqqx35abpj05mbhotd60|27082746, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, extensions -> {}, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, forceSynchronousCheckins -> false, forceUseNamedDriverClass -> false, identityToken -> 1bqqx35abpj05mbhotd60|27082746, idleConnectionTestPeriod -> 0, initialPoolSize -> 2, jdbcUrl -> jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 30, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 50, maxStatementsPerConnection -> 0, minPoolSize -> 2, numHelperThreads -> 3, preferredTestQuery -> null, privilegeSpawnedThreads -> false, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
test
到了這里,關(guān)于c3p0 數(shù)據(jù)池入門(mén)使用教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!