几种常用的Java数据源解决方案

几种常用的 Java 数据源解决方案

Java 中的数据源就是 javax.sql.DataSourceDataSource 的创建可以有不同的实现。

JNDI 方式创建 DataSource

    JNDI 方式创建数据源首先要配置数据源的相关连接信息,也就是数据源连接池。该配置应该在 Tomcat 安装目录下的 conf/context.xml 文件中配置。其配置如下:

    <Context>

……

    <!-- MySql -->

    <Resource name="jdbc/NutzDemo" auth="Container"

           type="javax.sql.DataSource"maxActive="100" maxIdle="30"

           maxWait="10000"username="root" password="root"

           driverClassName="com.mysql.jdbc.Driver"

           url="jdbc:mysql://localhost:3306/cheng"/>

    ……

</Context>

然后,在程序中以 JNDI 的方式创建数据源,得到数据库连接已进行相应的操作。代码如下:

    // 初始化 JNDI 上下文,创建 DataSource 对象

    Context initContext = new InitialContext();

    Context context = (Context)initContext.lookup( "java:comp/env" );

           DataSourcedataSource =  (DataSource)context.lookup( "jdbc/NutzDemo" );

 

 

Apache 提供的简单连接池创建数据源

以这种方式创建数据源必须先准备两个 jar 文件: commons-dbcp.jar commons-pool.jar

以这种方式创建的数据源就不再是 javax.sql.DataSourceDataSource 了,而是 org.apache.commons.dbcp.BasicDataSource 。而且不再需要配置任何文件就可以直接使用。代码如下:

// 创建 BasicDataSource 对象

    BasicDataSource ds = new BasicDataSource();

    ds.setDriverClassName( "com.mysql.jdbc.Driver" );

    ds.setUrl( "jdbc:mysql://localhost:3306/cheng" );

    ds.setUsername( "root" );

    ds.setPassword( "root" );

    ds.setInitialSize(50);

    ds.setMaxActive(100);

    ds.setMaxIdle(30);

    ds.setMaxWait(10000);

   

    // 关闭数据源连接

ds.close();

 

C3P0 方式创建数据源

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

    // 创建 ComboPooledDataSource 对象

    ComboPooledDataSource ds = new ComboPooledDataSource();

    ds.setDriverClass( "com.mysql.jdbc.Driver" );

    ds.setJdbcUrl( "jdbc:mysql://localhost:3306/cheng" );

    ds.setUser( "root" );

    ds.setPassword( "root" );

    ds.setInitialPoolSize(50);

    ds.setMaxPoolSize(100);

    ds.setMaxIdleTime(10000);

 

Proxool 方式创建数据源

    应该准备的 jar 文件为: proxool-01.9.0RC3.jar ,之后在项目中创建 ProxoolDataSource 对象,其代码如下:

    // 创建 ProxoolDataSource 对象

    ProxoolDataSource ds = new ProxoolDataSource();

    ds.setDriver( "com.mysql.jdbc.Driver" );

    ds.setDriverUrl( "jdbc:mysql://localhost:3306/cheng" );

    ds.setUser( "root" );

    ds.setPassword( "root" );

 

BoneCP 方式创建数据源

    BoneCP 是一个快速高效,开源免费的 Java 数据库接池。

创作者称, BoneCP 在性能上会完全超越所有主流的 Java 连接池。它可以帮你管理数据连接,让你的应用程序能更快速地访问数据库。比 C3P0 / DBCP (DataBaseconnection pool ,数据库连接池 ) 连接池快 25 倍。这个数据库连接池采用 Google Collection 作为内部的集合类框架,而且现在的版本已经很稳定。

要使用 BoneCP ,必须用到的 jar 文件有:

· bonecp-0.6.5.jar

· google-collections-1.0.jar

· slf4j-api-1.5.11.jar

· slf4j-log4j12-1.5.11.jar

· log4j-1.2.15.jar

在程序中创建 BoneCPDataSource 对象,代码如下:

// 创建 BoneCPDataSource 对象

    BoneCPDataSource ds = new BoneCPDataSource();

    ds.setDriverClass( "com.mysql.jdbc.Driver" );

    ds.setJdbcUrl( "jdbc:mysql://localhost:3306/cheng" );

    ds.setUsername( "root" );

    ds.setPassword( "root" );

    ds.setAcquireIncrement(1);

    ds.setAcquireRetryDelay(10000);

    ds.setIdleConnectionTestPeriod(100);

ds.setMinConnectionsPerPartition(2);

    ds.setMaxConnectionsPerPartition(20);

ds.setPartitionCount(2);

 

以上几种创建数据源的方式多以硬编码来实现,在实际应用中应该以配置文件的形式出现,以方便管理和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值