1. 程式人生 > >有關Datasource 和 Connection Pool(資料來源和連線池)

有關Datasource 和 Connection Pool(資料來源和連線池)

1.首先我先簡單介紹一下資料來源與連線池:

(1)資料來源(Data Source)是提供某種所需要資料的器件或原始媒體。JDBC中提供了javax.sql.DataSource介面,負責建立與資料庫的連線。 DataSource物件可以由Web伺服器提供,前提是需要在伺服器配置DataSource(包括連線池)

(2)而連線池的概念就像是一個水池,裝載的東西就是一個一個的連線通道。以前我們每次使用資料庫,都建立連線,會需要重新登入,然後從中取出資料,最後再將資料庫關閉。但是如果有了連線池,每次訪問資料庫的連線通道被儲存在連線池中。連線池起到了中介的作用,之後如果要進行相同的訪問時,那麼就可以很快的開啟連線通道,從而提高載入速度。

2.

2.連線池的用法:

有關連線池的產品:DBCP,CP30,Druid(首先需要引jar包),我們一般使用Druid.在pom檔案中配置有關的jar包資訊。

    <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

然後就可以使用了。至於具體的用法,我們可以先建立一個工具類:

public class DBSUtil {

	private static DruidDataSource dds;
	
	static{
		dds = new DruidDataSource();
		dds.setUrl("jdbc:mysql://localhost:3306/lianxi?useSSL=true");
		dds.setUsername("root");
		dds.setPassword("root");
	}
	
	public static DataSource getDBDS(){
		return dds;
	}
	
	public static Connection getDBConn(){
		try {
			return dds.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
}

這樣就可以得到一個DataSource物件,然後我們可以通過連線池獲取到連線。需要連線的時候呼叫靜態方法:

DBSUtil.getDBConn()得到一個連線,然後進行具體的操作,舉一個例子:

public void addStu(Student stu) throws SQLException {
		
		String sql = "insert into stu_info (stu_num,stu_name, stu_age, stu_gender) values (?, ?, ?, ?)";
		Connection conn = DButil.getDbConn();
		QueryRunner qr = new QueryRunner();
		qr.update(conn, sql, udi.getStuNum(), udi.getStuName(), udi.getStuAge(), udi.getStuGender());
		conn.close();
	}

需要注意的是:QueryRunner.update()有幾種過載方法,第三個位置往後的引數可以傳一個數組。