DriverManager DataSource

来源:互联网 发布:理财平台软件 编辑:程序博客网 时间:2024/05/20 11:36

概述:

DriverManager是驱动管理器,DataSource是数据源,一般DataSource是建立在DriverManager的基础上的,配合一个连接池的实现 。


1.DriverManager

DriverManager传统的jdbc连接,通过Class.forName("xxx")的办法注册之后,就可以DriverManager.getConnection()获得连接了。

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DBConnection {         private static String driverClass = "com.mysql.jdbc.Driver";         private static String url = "jdbc:mysql://localhost:3306/test";         private static String username = "root";         private static String password = "123456";         private static Connection conn = null;         static{             try {                 //注册驱动                 // 不要把conn = DriverManager.getConnection(url, username, password);                  //放在这里。防止所有用户都用一个Connection                   Class.forName(driverClass);                   } catch (Exception e) {                           throw new RuntimeException(e);                  }        }        public static Connection getConnection() throws SQLException{             conn = DriverManager.getConnection(url, username, password);             return conn;       }    } 

2.DataSource

DataSource有很多实现。

(1)jndi方式创建DataSource

以jndi方式创建数据源首先要配置数据源的相关连接信息,也就是数据连接池。该配置应该在Tomcat安装目录下的conf/context.xml文件中配置,在eclipse的j2ee架构下,也可以把context.xml文件创建在/META-INF目录下。基配置如下:

<Context><!--MySql--><Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"             maxActive="100" maxIdle="30" maxWait="10000"             username="[用户名]" password="[密码]" driverClassName="com.mysql.jdbc.Driver"             url="jdbc:mysql://localhost:3306/[实例名]?autoReconnect=true"/></Context>

public static DataSource getDataSource() {DataSource ds = null;try {// tomcat数据源连接与weblogic不同, 建立if...else...分支if(appSrvType == SysConfig.APPSRV_TOMCAT) {Context initCtx = (Context) new javax.naming.InitialContext();            Context envCtx = (Context) initCtx.lookup("java:comp/env");ds = (DataSource) envCtx.lookup(SysConfig.DATASOURCE_NAME);} else {Hashtable ht = new Hashtable();ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");Context initContext = new InitialContext(ht);ds = (DataSource) initContext.lookup(SysConfig.DATASOURCE_NAME);}} catch (Exception e) {e.printStackTrace();log.error("无法通过JNDI找到数据源,请配置jdbc数据源:" + SysConfig.DATASOURCE_NAME);}return ds;}

(2)以Apache提供的简单连接池创建DataSource

以这种方式创建数据源必须先准备两个jar文件:commons-dbcp.jar 和 commons-pool.jar,将这两个jar包放到WEB-INF/lib目录下。以这种方式创建的数据源就不再是javax.sql.DataSource了,而是org.apache.commons.dbcp.BasicDataSource。而且不再需要配置任何文件就可以直接使用。代码如下:


// 创建BasicDataSource对象    BasicDataSource ds = new BasicDataSource();    ds.setDriverClassName("com.mysql.jdbc.Driver");    ds.setUrl("jdbc:mysql://localhost:3306/[实例名]");    ds.setUsername("[用户名]");    ds.setPassword("[密码]");    ds.setInitialSize(50);    ds.setMaxActive(100);    ds.setMaxIdle(30);    ds.setMaxWait(10000); // 关闭数据源连接    ds.close();


(3)C3P0方式创建DataSource

使用C3P0方式创建数据源应该首先准备一个jar文件:c3p0-0.9.1.2.jar,将其放到WEB-INF/lib目录下,就可以在项目中使用C3P0创建数据源,C3P0创建的数据源对象也不是DataSource对象,而是ComboPooledDataSource。

// 创建ComboPooledDataSource对象ComboPooledDataSource ds = new ComboPooledDataSource();ds.setDriverClass("com.mysql.jdbc.Driver");ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");ds.setUser("[用户名]");ds.setPassword("[密码]");ds.setInitialPoolSize(50);ds.setMaxPoolSize(100);ds.setMaxIdleTime(10000);


0 0
原创粉丝点击