文章目錄
- 1. SSM使用c3p0連接池
- 1.1 配置c3p0.properties屬性檔案
- 1.2 Spring核心組態檔中配置applicationContext.xml
- 2. c3p0-config.xml
1. SSM使用c3p0連接池
1.1 配置c3p0.properties屬性檔案
#c3p0連接池屬性檔案
# 四大基本資訊
c3p0.driverClass=com.mysql.jdbc.Driver
#這里需要改成你自己的資料庫名稱 和 資料庫連接用戶名和密碼
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/資料庫名?useUnicode=true&characterEncoding=UTF-8&useSSL=false
c3p0.user=root
c3p0.password=root
# 初始化連接數 取值要在minPoolSize和maxPoolSize之間(可包含,閉區間) 默認值:3
c3p0.initialPoolSize=10
# 最大連接數 (連接池中的連接數不能超過maxPoolSize最大連接數) 默認值:15
c3p0.maxPoolSize=50
#最小連接數 默認值:3
c3p0.minPoolSize=5
#c3p0連接池中資料連接不夠時(無空閑連接可用),一次增長的個數(增長不能超過maxPoolSize最大連接個數) 默認值:3
c3p0.acquireIncrement=5
#連接的最大空閑時間,如果超過這個時間還沒有被使用,就斷開這個連接(設定為0或負數,就永遠都不會被斷開) 單位:秒 默認值 :0
c3p0.maxIdleTime=600
#從資料庫獲取新連接失敗后重復嘗試的次數,小于等于0表示無限次 默認值: 30
c3p0.acquireRetryAttempts=30
#兩次連接的中間間隔時間(重新嘗試的時間間隔) 單位:毫秒 默認值:1000
c3p0.acquireRetryDelay=1000
#連接關閉時,是否將所有未提交的操作進行事務回滾 默認值:false
c3p0.autoCommitOnClose = false
#當連接池用完時,客戶端呼叫getConnection()后等待獲取新連接的時間 單位:毫秒 默認值:0 (無限期等待) 按照設定的值,超時將拋出SQLException例外
c3p0.checkoutTimeout = 0
#每隔多少秒檢查所有連接池中的空閑連接 單位:秒 默認值:0
c3p0.idleConnectionTestPeriod=60
#配置PreparedStatement快取,設定連接池為資料源快取的PreparedStatement的總數,為0的時候不快取,同時maxStatementsPerConnection的配置無效,
# 由于PreparedStatement屬于單個Connection,所以這個數量應該根據應用中平均連接數乘以每個連接的平均PreparedStatement來計算
c3p0.maxStatements=1000
# 連接池為資料源單個Connection快取的PreparedStatement數,這個配置比maxStatements更有意義,因為它快取的服務物件是單個資料連接,如果設定的好,肯定是可以提高性能的,為0的時候不快取,
# c3p0.maxStatementsPerConnection
#配置連接的生存時間,超過這個時間的連接將由連接池自動斷開丟棄掉,當然正在使用的連接不會馬上斷開,而是等待它close再斷開,配置為0的時候則不會對連接的生存時間進行限制,默認值0
#c3p0.maxConnectionAge
#這個配置主要是為了減輕連接池的負載,配置不為0,則會將連接池中的連接數量保持到minPoolSize,為0則不處理,
#maxIdleTimeExcessConnections
1.2 Spring核心組態檔中配置applicationContext.xml
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 連接池4大組件 -->
<property name="driverClass" value="${c3p0.driverClass}"/>
<property name="jdbcUrl" value="${c3p0.jdbcUrl}"/>
<property name="user" value="${c3p0.user}"/>
<property name="password" value="${c3p0.password}"/>
<!--初始化連接數 取值要在minPoolSize和maxPoolSize之間(可包含,閉區間) 默認值:3 -->
<property name="initialPoolSize" value="${c3p0.initialPoolSize}"/>
<!-- 最大連接數 (連接池中的連接數不能超過maxPoolSize最大連接數) 默認值:15-->
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<!--最小連接數 默認值:3 -->
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<!-- c3p0連接池中資料連接不夠時(無空閑連接可用),一次增長的個數(增長不能超過maxPoolSize最大連接個數) 默認值:3 -->
<property name="acquireIncrement" value="${c3p0.acquireIncrement}"/>
<!-- 連接的最大空閑時間,如果超過這個時間還沒有被使用,就斷開這個連接(設定為0或負數,就永遠都不會被斷開) 單位:秒 默認值 :0 -->
<property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
<!-- 從資料庫獲取新連接失敗后重復嘗試的次數,小于等于0表示無限次 默認值: 30-->
<property name="acquireRetryAttempts" value="${c3p0.acquireRetryAttempts}"/>
<!-- 兩次連接的中間間隔時間(重新嘗試的時間間隔) 單位:毫秒 默認值:1000 -->
<property name="acquireRetryDelay" value="${c3p0.acquireRetryDelay}"/>
<!-- 連接關閉時,是否將所有未提交的操作進行事務回滾 默認值:false -->
<property name="autoCommitOnClose" value="${c3p0.autoCommitOnClose}"/>
<!-- 當連接池用完時,客戶端呼叫getConnection()后等待獲取新連接的時間 單位:毫秒 默認值:0
如果值設為 0,將無限期等待,直到有空閑連接, 否則按照設定的值,超時將拋出SQLException例外
時間設定過小時會出現連接超時,這樣會拋出SQLException例外,設定時間時需要小心,按照實際情況設定適當的值-->
<property name="checkoutTimeout" value="${c3p0.checkoutTimeout}"/>
<!-- 每隔多少秒檢查所有連接池中的空閑連接 單位:秒 默認值:0 -->
<property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}"/>
<!-- 配置PreparedStatement快取,設定連接池為資料源快取的PreparedStatement的總數
為0的時候不快取,同時maxStatementsPerConnection的配置無效,
由于PreparedStatement屬于單個Connection,所以這個數量應該根據應用中平均連接數乘以每個連接的平均PreparedStatement來計算-->
<property name="maxStatements" value="${c3p0.maxStatements}"/>
</bean>
2. c3p0-config.xml
這種通過創建自己的連接池工具類使用
<c3p0-config>
<!-- c3p0連接池配置 -->
<default-config>
<!--默認是mysql資料庫-->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/ssm?useUnicode=true&characterEncoding=UTF-8&useSSL=false</property>
<!-- 資料庫的用戶名 默認值:null -->
<property name="user">root</property>
<!-- 資料庫的密碼 默認值:null -->
<property name="password">861221293</property>
<!--初始化連接數 取值要在minPoolSize和maxPoolSize之間(可包含,閉區間) 默認值:3 -->
<property name="initialPoolSize">5</property>
<!-- 最大連接數 (連接池中的連接數不能超過maxPoolSize最大連接數) 默認值:15-->
<property name="maxPoolSize">50</property>
<!--最小連接數 默認值:3 -->
<property name="minPoolSize">10</property>
<!-- c3p0連接池中資料連接不夠時(無空閑連接可用),一次增長的個數(增長不能超過maxPoolSize最大連接個數) 默認值:3 -->
<property name="acquireIncrement">5</property>
<!-- 連接的最大空閑時間,如果超過這個時間還沒有被使用,就斷開這個連接(設定為0或負數,就永遠都不會被斷開) 單位:秒 默認值 :0 -->
<property name="maxIdleTime">600</property>
<!-- 從資料庫獲取新連接失敗后重復嘗試的次數,小于等于0表示無限次 默認值: 30-->
<property name="acquireRetryAttempts" value="30"/>
<!-- 兩次連接的中間間隔時間(重新嘗試的時間間隔) 單位:毫秒 默認值:1000 -->
<property name="acquireRetryDelay">1000</property>
<!-- 連接關閉時,是否將所有未提交的操作進行事務回滾 默認值:false -->
<property name="autoCommitOnClose">false</property>
<!-- 當連接池用完時,客戶端呼叫getConnection()后等待獲取新連接的時間 單位:毫秒 默認值:0
如果值設為 0,將無限期等待,直到有空閑連接, 否則按照設定的值,超時將拋出SQLException例外
時間設定過小時會出現連接超時,這樣會拋出SQLException例外,設定時間時需要小心,按照實際情況設定適當的值-->
<property name="checkoutTimeout">0</property>
<!-- 每隔多少秒檢查所有連接池中的空閑連接 單位:秒 默認值:0 -->
<property name="idleConnectionTestPeriod">60</property>
<!-- 配置PreparedStatement快取,設定連接池為資料源快取的PreparedStatement的總數
為0的時候不快取,同時maxStatementsPerConnection的配置無效,
由于PreparedStatement屬于單個Connection,所以這個數量應該根據應用中平均連接數乘以每個連接的平均PreparedStatement來計算-->
<property name="maxStatements">1000</property>
</default-config>
</c3p0-config>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/179334.html
標籤:其他
