java应用程序连接数据库的方式一般来说有两种
1. 通过java.sql.DriverManager来得到数据库的连接。
平常所说的
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
String user = "db2admin";
String password = "db2kingdom";
String url = "jdbc:db2://192.168.47.1:50000/TESTDB2";
conn = DriverManager.getConnection(url,user,password);
return conn
就是这种方式。
2.使用javax.sql.DataSource的方式连接数据库。
在使用连接池的时候用过是这么写的
DataSource ds = null;
try {
Context ctx = new javax.naming.InitialContext();
ds = (javax.sql.DataSource) (DataSource) ctx.lookup("jdbc/ccsb");
} catch (NamingException e) {
System.out.println("===初始化数据源失败!指定的JNDI不存在:jdbc/ccsb);
} catch (Exception e) {
e.printStackTrace();
}
return ds;
其中 对于数据源的管理(DataSource)又可以分为两种方式
(1)交由应用服务器来管理,然后再应用服务器的JNDI对象中通过looku() 方 s法查找得到。
例如:在tomcat的server.xml文件中
auth="container"
type="javax.sql.DataSource"
DriverclassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@192.168.0.8:1521:ora9i"
username="ccsb"
password="ccsb"
maxActive="20"
maxIdle="10"
maxWait="-1"/
通过在中注册一个资源Resource,这时,该数据源就已经交由应用服务器来管理了.该应用启动的时候,该资源就会被实例话并在应用服务器JNDI对象中保存该实例的一个句柄“jdbc/ccsb”,当要使用该数据源的时候,可以通过lookup这个句柄来取得该对象,并将其强制转型
(2)
交由第三方的数据源管理组件
如C3p0组件等,此时无法通过索引应用服务器的JNDI树来获得该数据源,因为JNDI是应用服务器相关的(JNDI是应用服务器的一个索引树)
数据库连接池
当使用数据源来操作数据库时,可以配置使用数据库连接池,来提高访问数据库的效率,对于连接池的管理也分为两种:1)应用服务器管理 2)第三方数据源管理组件来管理