c3p0 資料來源配置及使用
1、下載c3p0-0.9.1.2.jar
下載地址:http://download.csdn.net/detail/chunxiaqiudong5/9661922
2、新增配置檔案c3p0-config.xml
3、配置檔案內容如下:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<c3p0-config>
-
<!-- This is default config! -->
-
<default-config>
-
<property name="initialPoolSize">10</property>
-
<property name="maxIdleTime">30</property>
-
<property name="maxPoolSize">100</property>
-
<property name="minPoolSize">10</property>
-
<property name="maxStatements">200</property>
-
</default-config>
-
<!-- This is my config for mysql-->
-
<named-config name="mysql">
-
<property name="driverClass">com.mysql.jdbc.Driver</property>
-
<property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=UTF8</property>
-
<property name="user">root</property>
-
<property name="password"></property>
-
<!-- 初始化連線池中的連線數,取值應在minPoolSize與maxPoolSize之間,預設為3-->
-
<property name="initialPoolSize">10</property>
-
<!--最大空閒時間,60秒內未使用則連線被丟棄。若為0則永不丟棄。預設值: 0 -->
-
<property name="maxIdleTime">30</property>
-
<!--連線池中保留的最大連線數。預設值: 15 -->
-
<property name="maxPoolSize">100</property>
-
<!-- 連線池中保留的最小連線數,預設為:3-->
-
<property name="minPoolSize">10</property>
-
<!--c3p0全域性的PreparedStatements快取的大小。如果maxStatements與maxStatementsPerConnection均為0,則快取不生效,只要有一個不為0,則語句的快取就能生效。如果預設值: 0-->
-
<property name="maxStatements">200</property>
-
<!-- 當連線池連線耗盡時,客戶端呼叫getConnection()後等待獲取新連線的時間,超時後將丟擲SQLException,如設為0則無限期等待。單位毫秒。預設: 0 -->
-
<property name="checkoutTimeout" value="3000"/>
-
<!--當連線池中的連線耗盡的時候c3p0一次同時獲取的連線數。預設值: 3 -->
-
<property name="acquireIncrement" value="2"/>
-
<!--定義在從資料庫獲取新連線失敗後重復嘗試的次數。預設值: 30 ;小於等於0表示無限次-->
-
<property name="acquireRetryAttempts" value="0"/>
-
<!--重新嘗試的時間間隔,預設為:1000毫秒-->
-
<property name="acquireRetryDelay" value="1000" />
-
<!--關閉連線時,是否提交未提交的事務,預設為false,即關閉連線,回滾未提交的事務 -->
-
<property name="autoCommitOnClose">false</property>
-
<!--c3p0將建一張名為Test的空表,並使用其自帶的查詢語句進行測試。如果定義了這個引數那麼屬性preferredTestQuery將被忽略。你不能在這張Test表上進行任何操作,它將只供c3p0測試使用。預設值: null -->
-
<property name="automaticTestTable">Test</property>
-
<!--如果為false,則獲取連線失敗將會引起所有等待連線池來獲取連線的執行緒丟擲異常,但是資料來源仍有效保留,並在下次呼叫getConnection()的時候繼續嘗試獲取連線。如果設為true,那麼在嘗試獲取連線失敗後該資料來源將申明已斷開並永久關閉。預設: false-->
-
<property name="breakAfterAcquireFailure">false</property>
-
<!--每60秒檢查所有連線池中的空閒連線。預設值: 0,不檢查 -->
-
<property name="idleConnectionTestPeriod">60</property>
-
<!--maxStatementsPerConnection定義了連線池內單個連線所擁有的最大快取statements數。預設值: 0 -->
-
<property name="maxStatementsPerConnection"></property>
-
</named-config>
-
<!-- This is my config for oracle -->
-
<named-config name="oracle">
-
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
-
<property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
-
<property name="user">scott</property>
-
<property name="password">liang</property>
-
<property name="initialPoolSize">10</property>
-
<property name="maxIdleTime">30</property>
-
<property name="maxPoolSize">100</property>
-
<property name="minPoolSize">10</property>
-
<property name="maxStatements">200</property>
-
</named-config>
-
</c3p0-config>
4、連線池連線類
-
package com.xxx.utils;
-
import java.sql.Connection;
-
import java.sql.SQLException;
-
import javax.sql.DataSource;
-
import com.mchange.v2.c3p0.ComboPooledDataSource;
-
public class JDBCUtil {
-
private static DataSource dataSource=null;
-
static{
-
dataSource=new ComboPooledDataSource("mysql");
-
}
-
/**
-
* 獲取資料庫連線
-
* @return
-
*/
-
public static Connection getConnection(){
-
Connection conn=null;
-
try {
-
conn=dataSource.getConnection();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
return conn;
-
}
-
/**
-
* 關閉資料庫連線
-
* @param conn
-
*/
-
public static void closeConn(Connection conn){
-
try {
-
if(conn!=null && conn.isClosed()){
-
conn.close();
-
}
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
}
5、測試
-
package com.xxx.test;
-
import java.sql.Connection;
-
import java.sql.PreparedStatement;
-
import java.sql.ResultSet;
-
import java.sql.SQLException;
-
import org.junit.Test;
-
import com.xxx.utils.JDBCUtil;
-
public class TestJdbc {
-
@Test
-
public void test() {
-
Connection conn=JDBCUtil.getConnection();
-
System.out.println(conn);
-
try {
-
PreparedStatement stmt=conn.prepareStatement("select * from tb_user");
-
ResultSet re=stmt.executeQuery();
-
while(re.next()){
-
String name=re.getString(2);
-
System.out.println(name);
-
}
-
} catch (SQLException e) {
-
// TODO Auto-generated catch block
-
e.printStackTrace();
-
}
-
}
-
}
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
c3p0的配置方式分為三種,分別是
1.setters一個個地設定各個配置項
2.類路徑下提供一個c3p0.properties檔案
3.類路徑下提供一個c3p0-config.xml檔案
1.setters一個個地設定各個配置項
這種方式最繁瑣,形式一般是這樣:
-
01 Properties props = new Properties();
-
02 InputStream in = ConnectionManager.class.getResourceAsStream("/c3p0.properties");
-
03 props.load(in);
-
04 in.close();
-
05
-
06 ComboPooledDataSource cpds = new ComboPooledDataSource();
-
07 cpds.setDriverClass(props.getProperty("driverClass"));
-
08 cpds.setJdbcUrl(props.getProperty("jdbcUrl"));
-
09 cpds.setUser(props.getProperty("user"));
-
10 cpds.setPassword(props.getProperty("password"));
因為繁瑣,所以很不適合採用,於是文件提供了另外另種方式。
2. 類路徑下提供一個c3p0.properties檔案
檔案的命名必須是c3p0.properties,裡面配置項的格式為:
-
1 c3p0.driverClass=com.mysql.jdbc.Driver
-
2 c3p0.jdbcUrl=jdbc:mysql://localhost:3306/jdbc
-
3 c3p0.user=root
-
4 c3p0.password=java
上面只提供了最基本的配置項,其他配置項參照 文件配置,記得是c3p0.後面加屬性名就是了,最後初始化資料來源的方式就是這樣簡單:
-
1 private static ComboPooledDataSource ds = new ComboPooledDataSource();
-
2
-
3 public static Connection getConnection() {
-
4 try {
-
5 return ds.getConnection();
-
6 } catch (SQLException e) {
-
7 throw new RuntimeException(e);
-
8 }
-
9 }
3.類路徑下提供一個c3p0-config.xml檔案
這種方式使用方式與第二種差不多,但是有更多的優點
(1).更直觀明顯,很類似hibernate和spring的配置
(2).可以為多個數據源服務,提供default-config和named-config兩種配置方式
下面是一個配置模板:
-
01 <c3p0-config>
-
02 <default-config>
-
03 <property name="user">root</property>
-
04 <property name="password">java</property>
-
05 <property name="driverClass">com.mysql.jdbc.Driver</property>
-
06 <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
-
07
-
08 <property name="initialPoolSize">10</property>
-
09 <property name="maxIdleTime">30</property>
-
10 <property name="maxPoolSize">100</property>
-
11 <property name="minPoolSize">10</property>
-
12 </default-config>
-
13
-
14 <named-config name="myApp">
-
15 <property name="user">root</property>
-
16 <property name="password">java</property>
-
17 <property name="driverClass">com.mysql.jdbc.Driver</property>
-
18 <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
-
19
-
20 <property name="initialPoolSize">10</property>
-
21 <property name="maxIdleTime">30</property>
-
22 <property name="maxPoolSize">100</property>
-
23 <property name="minPoolSize">10</property>
-
24 </named-config>
-
25 </c3p0-config>
如果要使用default-config則初始化資料來源的方式與第二種一樣,如果要使用named-config裡面配置初始化資料來源,則只要使用一個帶引數的ComboPooledDataSource構造器就可以了
private static ComboPooledDataSource ds = new ComboPooledDataSource("myApp");
下面整理一下從文件和網上學習到的c3p0配置的理解 (user,password,driverClass,jdbcUrl沒有說的必要)
1.基本配置項
-
01 acquireIncrement
-
02 default : 3
-
03 連線池在無空閒連線可用時一次性建立的新資料庫連線數
-
04
-
05 initialPoolSize
-
06 default : 3
-
07 連線池初始化時建立的連線數
-
08
-
09 maxPoolSize
-
10 default : 15
-
11 連線池中擁有的最大連線數,如果獲得新連線時會使連線總數超過這個值則不會再獲取新連線,而是等待
-
12 其他連線釋放,所以這個值有可能會設計地很大
-
13
-
14 maxIdleTime
-
15 default : 0 單位 s
-
16 連線的最大空閒時間,如果超過這個時間,某個資料庫連線還沒有被使用,則會斷開掉這個連線
-
17 如果為0,則永遠不會斷開連線
-
18
-
19 minPoolSize
-
20 default : 3
-
21 連線池保持的最小連線數,後面的maxIdleTimeExcessConnections跟這個配合使用來減輕連線池的負載
2.管理連線池的大小和連線的生存時間
-
01 maxConnectionAge
-
02 default : 0 單位 s
-
03 配置連線的生存時間,超過這個時間的連線將由連線池自動斷開丟棄掉。當然正在使用的連線不會馬上斷開,而是等待
-
04 它close再斷開。配置為0的時候則不會對連線的生存時間進行限制。
-
05
-
06 maxIdleTimeExcessConnections
-
07 default : 0 單位 s
-
08 這個配置主要是為了減輕連線池的負載,比如連線池中連線數因為某次資料訪問高峰導致建立了很多資料連線
-
09 但是後面的時間段需要的資料庫連線數很少,則此時連線池完全沒有必要維護那麼多的連線,所以有必要將
-
10 斷開丟棄掉一些連線來減輕負載,必須小於maxIdleTime。配置不為0,則會將連線池中的連線數量保持到minPoolSize。
-
11 為0則不處理。
maxIdleTime也可以歸屬到這一類,前面已經寫出來了。
3.配置連線測試:因為連線池中的資料庫連線很有可能是維持數小時的連線,很有可能因為資料庫伺服器的問題,網路問題等導致實際連線已經無效,但是連線池裡面的連線還是有效的,如果此時獲得連線肯定會發生異常,所以有必要通過測試連線來確認連線的有效性。
下面的前三項用來配置如何對連線進行測試,後三項配置對連線進行測試的時機。
-
01 automaticTestTable
-
02 default : null
-
03 用來配置測試連線的一種方式。配置一個表名,連線池根據這個表名建立一個空表,
-
04 並且用自己的測試sql語句在這個空表上測試資料庫連線
-
05 這個表只能由c3p0來使用,使用者不能操作,同時使用者配置的preferredTestQuery 將會被忽略。
-
06
-
07 preferredTestQuery
-
08 default : null
-
09 用來配置測試連線的另一種方式。與上面的automaticTestTable二者只能選一。
-
10 如果要用它測試連線,千萬不要設為null,否則測試過程會很耗時,同時要保證sql語句中的表在資料庫中一定存在。
-
11
-
12 connectionTesterClassName
-
13 default : com.mchange.v2.c3p0.impl.DefaultConnectionTester
-
14 連線池用來支援automaticTestTable和preferredTestQuery測試的類,必須是全類名,就像預設的那樣,
-
15 可以通過實現UnifiedConnectionTester介面或者繼承AbstractConnectionTester來定製自己的測試方法
-
16
-
17 idleConnectionTestPeriod
-
18 default : 0
-
19 用來配置測試空閒連線的間隔時間。測試方式還是上面的兩種之一,可以用來解決MySQL8小時斷開連線的問題。因為它
-
20 保證連線池會每隔一定時間對空閒連線進行一次測試,從而保證有效的空閒連線能每隔一定時間訪問一次資料庫,將於MySQL
-
21 8小時無會話的狀態打破。為0則不測試。
-
22
-
23 testConnectionOnCheckin
-
24 default : false
-
25 如果為true,則在close的時候測試連線的有效性。為了提高測試效能,可以與idleConnectionTestPeriod搭配使用,
-
26 配置preferredTestQuery或automaticTestTable也可以加快測試速度。
-
27
-
28 testConnectionOnCheckout
-
29 default : false
-
30 效能消耗大。如果為true,在每次getConnection的時候都會測試,為了提高效能,
-
31 可以與idleConnectionTestPeriod搭配使用,
-
32 配置preferredTestQuery或automaticTestTable也可以加快測試速度。
4.配置PreparedStatement快取
-
01 maxStatements
-
02 default : 0
-
03 連線池為資料來源快取的PreparedStatement的總數。由於PreparedStatement屬於單個Connection,所以
-
04 這個數量應該根據應用中平均連線數乘以每個連線的平均PreparedStatement來計算。為0的時候不快取,
-
05 同時maxStatementsPerConnection的配置無效。
-
06
-
07 maxStatementsPerConnection
-
08 default : 0
-
09 連線池為資料來源單個Connection快取的PreparedStatement數,這個配置比maxStatements更有意義,因為
-
10 它快取的服務物件是單個數據連線,如果設定的好,肯定是可以提高效能的。為0的時候不快取。
5.重連相關配置
-
01 acquireRetryAttempts
-
02 default : 30
-
03 連線池在獲得新連線失敗時重試的次數,如果小於等於0則無限重試直至連接獲得成功
-
04
-
05 acquireRetryDelay
-
06 default : 1000 單位ms
-
07 連線池在獲得新連線時的間隔時間
-
08
-
09 breakAfterAcquireFailure
-
10 default : false
-
11 如果為true,則當連接獲取失敗時自動關閉資料來源,除非重新啟動應用程式。所以一般不用。
個人覺得上述三個沒有更改的必要,但可以將acquireRetryDelay配置地更短一些
6.定製管理Connection的生命週期
-
1 connectionCustomizerClassName
-
2 default : null
-
3 用來定製Connection的管理,比如在Connection acquire 的時候設定Connection的隔離級別,或者在
-
4 Connection丟棄的時候進行資源關閉,就可以通過繼承一個AbstractConnectionCustomizer來實現相關
-
5 方法,配置的時候使用全類名。有點類似監聽器的作用。
例如:
-
01 import java.sql.Connection;
-
02 import com.mchange.v2.c3p0.AbstractConnectionCustomizer;
-
03
-
04 public class ConnectionCustomizer extends AbstractConnectionCustomizer{
-
05
-
06 @Override
-
07 public void onAcquire(Connection c, String parentDataSourceIdentityToken)
-
08 throws Exception {
-
09 System.out.println("acquire : " + c);
-
10 }
-
11 @Override
-
12 public void onCheckIn(Connection c, String parentDataSourceIdentityToken)
-
13 throws Exception {
-
14 System.out.println("checkin : " + c);
-
15 }
-
16 @Override
-
17 public void onCheckOut(Connection c, String parentDataSourceIdentityToken)
-
18 throws Exception {
-
19 System.out.println("checkout : " + c);
-
20 }
-
21 @Override
-
22 public void onDestroy(Connection c, String parentDataSourceIdentityToken)
-
23 throws Exception {
-
24 System.out.println("destroy : " + c);
-
25 }
-
26 }
<property name="connectionCustomizerClassName">liuyun.zhuge.db.ConnectionCustomizer</property>
7.配置未提交的事務處理
-
1 autoCommitOnClose
-
2 default : false
-
3 連線池在回收資料庫連線時是否自動提交事務
-
4 如果為false,則會回滾未提交的事務
-
5 如果為true,則會自動提交事務
-
6
-
7 forceIgnoreUnresolvedTransactions
-
8 default : false
-
9 這個配置強烈不建議為true。
8.配置debug和回收Connection一般來說事務當然由自己關閉了,為什麼要讓連線池來處理這種不細心問題呢?
-
01 unreturnedConnectionTimeout
-
02 default : 0 單位 s
-
03 為0的時候要求所有的Connection在應用程式中必須關閉。如果不為0,則強制在設定的時間到達後回收
-
04 Connection,所以必須小心設定,保證在回收之前所有資料庫操作都能夠完成。這種限制減少Connection未關閉
-
05 情況的不是很適用。為0不對connection進行回收,即使它並沒有關閉。
-
06
-
07 debugUnreturnedConnectionStackTraces
-
08 default : false
-
09 如果為true並且unreturnedConnectionTimeout設為大於0的值,當所有被getConnection出去的連線
-
10 unreturnedConnectionTimeout時間到的時候,就會打印出堆疊資訊。只能在debug模式下適用,因為
-
11 列印堆疊資訊會減慢getConnection的速度
同第七項一樣的,連線用完當然得close了,不要通過unreturnedConnectionTimeout讓連線池來回收未關閉的連線。
9.其他配置項:因為有些配置項幾乎沒有自己配置的必要,使用預設值就好,所以沒有再寫出來
-
1 checkoutTimeout
-
2 default : 0
-
3 配置當連線池所有連線用完時應用程式getConnection的等待時間。為0則無限等待直至有其他連線釋放
-
4 或者建立新的連線,不為0則當時間到的時候如果仍沒有獲得連線,則會丟擲SQLException
三、示例:
示例採用第二種方式:
1.c3p0.properties:
-
#驅動
-
c3p0.driverClass=com.mysql.jdbc.Driver
-
#地址
-
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/jdbc
-
#使用者名稱
-
c3p0.user=root
-
#密碼
-
c3p0.password=lovejava
-
#-------------------------------
-
#連線池初始化時建立的連線數
-
c3p0.initialPoolSize=3
-
#連線池保持的最小連線數
-
c3p0.minPoolSize=3
-
#連線池在無空閒連線可用時一次性建立的新資料庫連線數,default:3
-
c3p0.acquireIncrement=3
-
#連線池中擁有的最大連線數,如果獲得新連線時會使連線總數超過這個值則不會再獲取新連線,而是等待其他連線釋放,所以這個值有可能會設計地很大,default : 15
-
c3p0.maxPoolSize=15
-
#連線的最大空閒時間,如果超過這個時間,某個資料庫連線還沒有被使用,則會斷開掉這個連線,單位秒
-
c3p0.maxIdleTime=100
-
#連線池在獲得新連線失敗時重試的次數,如果小於等於0則無限重試直至連接獲得成功
-
c3p0.acquireRetryAttempts=30
-
#連線池在獲得新連線時的間隔時間
-
c3p0.acquireRetryDelay=1000
2.ConnectionPool
-
package com.study.pool;
-
import java.sql.Connection;
-
import java.sql.SQLException;
-
import javax.sql.DataSource;
-
import com.mchange.v2.c3p0.ComboPooledDataSource;
-
public class ConnectionPool {
-
private DataSource ds;
-
private static ConnectionPool pool;
-
private ConnectionPool(){
-
ds = new ComboPooledDataSource();
-
}
-
public static final ConnectionPool getInstance(){
-
if(pool==null){
-
try{
-
pool = new ConnectionPool();
-
}catch (Exception e) {
-
e.printStackTrace();
-
}
-
}
-
return pool;
-
}
-
public synchronized final Connection getConnection() {
-
try {
-
return ds.getConnection();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
return null;
-
}
-
}
3.PoolThread
-
package com.study.pool;
-
import java.sql.Connection;
-
import java.sql.PreparedStatement;
-
import java.sql.ResultSet;
-
import java.sql.SQLException;
-
public class PoolThread extends Thread {
-
@Override
-
public void run(){
-
ConnectionPool pool = ConnectionPool.getInstance();
-
Connection con = null;
-
PreparedStatement stmt= null;
-
ResultSet rs = null;
-
try{
-
con = pool.getConnection();
-
stmt = con.prepareStatement("select sysdate as nowtime from dual");
-
rs = stmt.executeQuery();
-
while(rs.next()){
-
System.out.println(Thread.currentThread().getId()+"---------------開始"+rs.getString("nowtime"));
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}finally{
-
try {
-
rs.close();
-
stmt.close();
-
con.close();
-
} catch (SQLException e) {
-
e.printStackTrace();
-
}
-
}
-
System.out.println(Thread.currentThread().getId()+"--------結束");
-
}
-
}
4.PoolMain
-
package com.study.pool;
-
public class PoolMain {
-
/**
-
* 資料來源緩衝池 例項練習
-
*/
-
public static void main(String[] args) {
-
System.out.println("緩衝池模擬開始");
-
PoolThread[] threads = new PoolThread[50];
-
for(int i=0;i<threads.length;i++){
-
threads[i] = new PoolThread();
-
}
-
for(int i=0;i<threads.length;i++){
-
threads[i].start();
-
}
-
}
-
}
相關推薦
c3p0 資料來源配置及使用
1、下載c3p0-0.9.1.2.jar 下載地址:http://download.csdn.net/detail/chunxiaqiudong5/9661922 2、新增配置檔案c3p0-config.xml 3、配置檔案內容如下: <
完整JavaWeb專案筆記 第七部分-JNDI資料來源配置及DBUtil封裝
文章目錄 一 何為JNDI 二 為單獨的專案JNDI配置 三 DBUtil封裝 四 DBUtil缺陷 一 何為JNDI 按百度百科的說法,是SUN公司提供的一種標準的Java命名系統介面。呃……再細點說
【框架整合】二、Spring資料來源配置及JdbcTemplate配置
一、匯入必需包 c3p0-0.9.1.2.jar commons-dbcp-1.4.jar commons-pool-1.6.jar mysql-connector-java-5.1.24.jar 二、 建立jdbc.properties jdbc.driverC
spring資料來源配置及事務管理--entityManager
一、實體管理其必須執行在web(ejb容器)容器,用main方法是不能執行的。 二、配置檔案:applicationContext-em.xml <beans xmlns="http://www.springframework.org/schema/beans"
歷史上最詳細的SpringBoot多資料來源配置及使用流程
關於標題—>只是想看看標題黨的效果如何 一、場景(簡化) 要實現一個使用者資料中心的系統架構,其中要用到兩個資料庫,一個database名為sso,主要存放使用者的資訊。另一個database名為configuration,存放一些配置資訊。當
Weblogic之weblogic資料來源配置及jndi呼叫
將資料來源交給容器管理,使用jndi的方式管理,可以很方便的管理資料庫連線。 將資料管理庫交給容器,後面工程直接使用jndi的方式在容器中獲取jndi地址。 如果變更資料庫地址,直接修改資料庫連線池的
[課本10.1.4]JDBC資料庫連線池- C3P0資料來源--通過構造方法建立資料來源物件--通過配置檔案建立資料來源物件[推薦]
JDBC- C3P0資料來源 1 /*重點提醒*/ 2 連線資料庫的較低的jar包版本會與較高版本的mysql版本有衝突; 3 通過把mysql 8.0的版本降到5.5, jar包仍使用較高的 mysql-connector-java-5.1.7-bin.jar, 完美解決衝突.  
spring cloud 雙資料來源配置,兩種方式jdbc和mybatis(jdbcTemplate和 sqlsessionTemplate)及需要注意的問題
一、jdbcTemplate:jdbc application.yml檔案: spring: application:
JavaWeb C3P0資料來源——通過配置檔案建立資料來源物件
在JDBC基本操作中,每次操作資料庫都需要建立和斷開一次Connection物件, 但是如果訪問操作十分頻繁的話,就會十分影響訪問資料庫的問題,想要解決這個問題就需要使用資料庫連線池, C3P0是現在很流行的開源資料庫連線池, 下面是一個通過配置檔案建立資料來源物件 1、建立配置
c3p0資料來源和dbcp資料來源配置
c3p0資料來源變數名 driverClass=com.mysql.cj.jdbc.Driver jdbcUrl=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&
資料庫的連線池的原理與Hibernate的內建連線池及C3P0的配置
<hibernate-configuration><session-factory>DB連線四要素<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
c3p0詳細配置(c3p0-config.xml)及使用
<default-config> <!-- 資料庫驅動名 --> <property name="driver
springboot+mybatis多資料來源配置方法及遇到的問題
這裡做的測試,兩個資料庫內表都一樣 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
資料庫串燒(一)odbc驅動安裝及資料來源配置
前言 開放資料庫連線(Open Database Connectivity,ODBC)是為解決異構資料庫間的資料共享而產生的,現已成為WOSA(The Windows Open System Architecture ),Windows開放系統體系結構)的主要
[C3P0]XML檔案配置及使用
總檔案c3p0-config.xml配置: <?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <def
c3p0資料來源的使用初步及Mysql8小時問題解決
c3p0號稱是java界最好的資料池。 c3p0的配置方式分為三種,分別是 1.setters一個個地設定各個配置項 2.類路徑下提供一個c3p0.properties檔案 3.類路徑下提供一個c3p0-config.xml檔案 我們主要說下c3p0-config.xml
c3p0資料庫連線池資料來源配置
不管通過何種持久化技術,都必須通過資料連線訪問資料庫,在Spring中,資料連線是通過資料來源獲得的。在以往的應用中,資料來源一般是 Web應用伺服器提供的。在Spring中,你不但可以通過JNDI獲取應用伺服器的資料來源,也可以直接在Spring容器中配置資料來源,此外,你還可以 通過程式碼的方式建立一
wordybear之STS下spring boot、mybatis多資料來源配置完全攻略及原始碼工程
// 2017.09.01 本文所依賴的開發環境早已更改為intellij idea,然而並不影響任何 本文面對初學者,在對基礎有些瞭解但又似懂非懂有些混亂的情況下(作者一般學習新技的最初狀態,此時需要冷靜)。 但是,仔細閱讀本文,將會在相同或相似的環境下實現sts下spr
Spring Boot從入門到精通(五)多資料來源配置實現及原始碼分析
多資料來源配置在專案軟體中是比較常見的開發需求,Spring和Spring Boot中對此都有相應的解決方案可供大家參考。在Spring Boot中,如MyBatis、JdbcTemplate以及Jpa都可以配置多資料來源。 本文在前一篇“Spring Boot從入門到精通(四)連線MySQL資料庫(附原始碼
oracle em企業管理器的安裝、配置及相關問題
密碼 技術分享 分享 control spa alt .com 企業管理 gre 2017-05-10 一、配置ORACLE_UNQNAME環境變量 二、重建EM資料庫:emca -repos recreate 三、配置EM賬號密碼:DBSNMP、SYSMAN 四、配置EM