DBCP是一个常用的数据库连接池,JDBC是数据库连接的一套API。
package com.ufgov.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class HelloWorld {
static Connection conn = null;
public static Connection getConnect() throws ClassNotFoundException, SQLException{
String driver = "oracle.jdbc.driver.OracleDriver";
String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String name = "sa";
String password="1";
/*
* 将oracle的驱动程序注册到 DriverManager中
*
* 在通过Class.forName()显示加载oracle.jdbc.driver.OracleDriver的时候,
* 会执行Driver的静态代码块,这个静态代码块就调用了DriverManager添加驱动的方法,
* 将自己注册到了驱动管理器中
*/
Class.forName(driver);
conn = DriverManager.getConnection(url,name,password);
return conn;
}
public static void main(String args[]){
try {
conn = getConnect();
String sql = "Select ddbh from ra_donation_order_detail";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet st = ps.executeQuery();
// Statement sqlStatement = conn.createStatement();
// ResultSet result = sqlStatement.executeQuery(query);
while(st.next()){
System.out.print(st.getString("ddbh") + "\n");
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
spring中配置DataSource的方法:
<bean id="csDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>
</property>
<property name="username">
value>sa</value>
</property>
<property name="password">
<value>1</value>
</property>
</bean>
JNDI 在 J2EE 中的角色就是“交换机” —— J2EE 组件在运行时间接地查找其他组件、资源或服务的通用机制。在多数情况下,提供 JNDI 供应者的容器可以充当有限的数据存储,这样管理员就可以设置应用程序的执行属性,并让其他应用程序引用这些属性(Java 管理扩展(Java Management Extensions,JMX)也可以用作这个目的)。JNDI 在 J2EE 应用程序中的主要角色就是提供间接层,这样组件就可以发现所需要的资源,而不用了解这些间接性。
<bean id="dataSource" class="com.ufgov.gmap.springsupport.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/webglDS_A6</value>
</property>
</bean>
没有JNDI的做法存在的问题:
1、数据库服务器名称 、用户名和口令都可能需要改变,由此引发JDBC URL需要修改;
2、数据库可能改用别的产品,如改用DB2或者Oracle,引发JDBC驱动程序包和类名需要修改;
3、随着实际使用终端的增加,原配置的连接池参数可能需要调整;