有關Datasource 和 Connection Pool(資料來源和連線池)
阿新 • • 發佈:2019-02-14
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()有幾種過載方法,第三個位置往後的引數可以傳一個數組。