datasource的应用方案

来源:互联网 发布:qq影音 mac 编辑:程序博客网 时间:2024/06/05 17:52

来源: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”);

原创粉丝点击