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/

posted @ 2014-04-26 12:31  losesea  阅读(5171)  评论(0编辑  收藏  举报