JDBC DataSource


  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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM