六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 208|回复: 0

DataSource 使用方法

[复制链接]

升级  36%

4

主题

4

主题

4

主题

童生

Rank: 1

积分
18
 楼主| 发表于 2013-1-14 23:00:40 | 显示全部楼层 |阅读模式
转自:http://marshal.easymorse.com/archives/425
 
 
DataSource接口(javax.sql.DataSource)替代DriverManager获取Connection的方法,有以下好处:

  • 可以在部署时灵活更换Connection实现;
  • 可以更好的屏蔽数据库的相关性。
以下以oracle为例说明。
 
使用厂商DataSource

数据库厂商在提高JDBC2.0和以上版本的JDBC驱动中应该包含厂商的DataSource实现。
 
OracleDataSource ods = new OracleDataSource();ods.setUser(“my_user”);ods.setPassword(“my_password”);ods.setURL(“jdbc:oracle:thin:@<database>”);Connection conn = ods.getConnection();  
第三方DataSource

第三方厂商也可提供DataSource实现,比如免费开源的有DBCP,C3P0和proxool等,中间件厂商比如ibm的websphere,bea的weblogic等也都有实现。
以下是DBCP的示例:
 BasicDataSource basicDataSource = new BasicDataSource();

basicDataSource.setDriverClassName(“oracle.jdbc.OracleDriver”); basicDataSource.setUrl(“jdbc:oracle:thin:@<database>”); basicDataSource.setUsername(“user”);basicDataSource.setPassword(“password”); Connection connection=basicDataSource.getConnection(); 结合JNDI的DataSource

以tomcat为例,将数据库驱动库复制到{tomcat}/commmon/lib目录下。
配置{tomcat}/conf/context.xml文件,加入:

<Resource name=”jdbc/demo” auth=”Container” type=”javax.sql.DataSource”        driverClassName=”org.apache.derby.jdbc.ClientDriver”        url=”jdbc:derby://localhost:1527/demo”        username=”test”        password=”test”        maxActive=”2″        maxIdle=”1″        removeAbandoned=”true”        maxWait=”300″ />

在程序中访问DataSource:

Context initContext = new InitialContext();// 注意: 以下写法只适用于tomcat(java:/comp/env).Context envContext = (Context) initContext.lookup(“java:/comp/env”);dataSource = (DataSource) envContext.lookup(“jdbc/demo”); 配置内容也可以加到webapp/META-INF/context.xml文件中,这样更便于打包部署。 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表