What is DataSource?
作為 DriverManager 設施的替代項,DataSource 對象是獲取連接的首選方法。實現DataSource 接口的對象通常在基於 Java(TM) Naming and Directory Interface (JNDI) API 的命名服務中注冊。增強程序的可移植性;DataSource是一種方便的手段.
DataSource 接口由驅動程序供應商實現。共有三種類型的實現:
1. 基本實現 - 生成標准 Connection 對象(此時DataSource的作用與DriverManager完全一樣)。
2. 連接池實現 - 生成自動參與連接池的 Connection 對象。此實現與中間層連接池 管理器一起使用。
3. 分布式事務實現 - 生成一個 Connection 對象,該對象可用於分布式事務,並且幾乎始終參與連接池。此實現與中間層事務管理器一起使用,並且幾乎始終與連接池管理器一起使用。
取數據庫連接的方式
1. 第一種:
Class.forName("數據庫驅動類的名字");// 注冊
Connection con = DriverManager.getConnection(url,userName,password);
編碼本身對底層的數據源很依賴,可移植性差
2. 第二種:
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("jdbc/tarena");
Connection con = ds.getConnection();
DataSource接口主要方法:getConnection()返回一個數據庫連接。
DataSource實現類主要方法:
setURL(String url);
setUser(String user);
setPassword(String password);
可移植性好,缺點:會增加應用開發的復雜性,因為使用它的時候要提供以各應用服務器的支持。
例子:
Mysql版本
public static Connection getMysqlConnectionThruDataSource()
throws SQLException {
MysqlDataSource ds = new MysqlDataSource();
ds.setURL("jdbc:mysql://localhost:3306/tarena");
ds.setUser("narci");
ds.setPassword("11");
return ds.getConnection();
}
Oracle版本
public static Connection getOracleConnectionThruDataSource()
throws SQLException {
OracleDataSource ds = new OracleDataSource();
String url = "jdbc:oracle:thin:@192.168.0.100:1521:tarena";
String username = "tarena";
String password = "tarena";
ds.setURL(url);
ds.setUser(username);
ds.setPassword(password);
return ds.getConnection();
}
http://blog.163.com/muyexin@126/blog/static/399680832010819105528741/