[转帖]JAVA开发中数据源创建方法_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
2
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2427 | 回复: 1   主题: [转帖]JAVA开发中数据源创建方法        下一篇 
    本主题由 qq_1414553774380 于 2014-11-24 18:07:35 移动
panpan.nie
注册用户
等级:大校
经验:4754
发帖:217
精华:2
注册:1970-1-1
状态:离线
发送短消息息给panpan.nie 加好友    发送短消息息给panpan.nie 发消息
发表于: IP:您无权察看 2014-11-24 9:18:10 | [全部帖] [楼主帖] 楼主

数据源是数据库连接池里面的概念,连接池就是指当服务器启动时,先建立几个连接,在应用需要与数据库连接时,就从连接池里获取,使用完以后,不是将连接断掉,而是放回到池里面,这样就减少了数据连接创建的次数,大大提高了连接性能。而数据源就是给服务器一个配置信息,然服务器就知道怎么使用JDBC驱动,比如url参数,数据库实例名、用户名与密码等等。Java中的数据源就是javax.sql.DataSource。DataSource的创建可以有不同的实现,下面以mysql为例介绍几种常见DataSource的创建方法:

一、JNDI方式创建DataSource

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

<Context><!--MySql-->
<Resource name="jdbc/movie" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"


 username="[用户名]" password="[密码]" driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/[实例名]?autoReconnect=true"/>
</Context>


正确的配置后,就可以在程序中以JNDI的方式创建数据源,得到数据库连接并进行相应的操作。代码如下:

try {
      Context context = new InitialContext();
      if (context == null){
            throw new Exception("create context failed!");
      }
      DataSource ds = (DataSource) context.lookup("java:comp/env/jdbc/[实例名]");
      if (ds == null) {
            Thread.sleep(2000);
            ds = (DataSource) context.lookup("java:comp/env/jdbc/[实例名]");
            if (ds == null) {
                  throw new Exception("get datasource failed!");
            }
      }
} catch (NamingException ne) {
      throw ne;
} catch (Exception e) {
      throw e;
}


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

    以这种方式创建数据源必须先准备两个jar文件:commons-dbcp.jar 和 commons-pool.jar,将这两个jar包放到WEB-INF/lib目录下。以这种方式创建的数据源就不再是javax.sql.DataSource了,而是org.apache.commons.dbcp.BasicDataSource。而且不再需要配置任何文件就可以直接使用。代码如下:

// 创建BasicDataSource对象
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:
mysql://localhost:3306/[实例名]");

 ds.setUsername("[用户名]");
ds.setPassword("[密码]");
ds.setInitialSize(50);
ds.setMaxActive(100);
ds.setMaxIdle(30);
ds.setMaxWait(10000);
// 关闭数据源连接
ds.close();


该贴由qq_1414553774380转至本版2014-11-24 18:07:35



赞(0)    操作        顶端 
panpan.nie
注册用户
等级:大校
经验:4754
发帖:217
精华:2
注册:1970-1-1
状态:离线
发送短消息息给panpan.nie 加好友    发送短消息息给panpan.nie 发消息
发表于: IP:您无权察看 2014-11-24 9:19:10 | [全部帖] [楼主帖] 2  楼

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

// 创建ComboPooledDataSource对象
ComboPooledDataSource ds = newComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUser("[用户名]");
ds.setPassword("[密码]");
ds.setInitialPoolSize(50);
ds.setMaxPoolSize(100);
ds.setMaxIdleTime(10000);


四、Proxool方式创建数据源
    采用该方式创建数据源需要准备的jar包:proxool-01.9.0RC3.jar,将其放到WEB-INF/lib目录下,之后就可以项目中创建ProxoolDataSource对象,其代码如下:

// 创建ProxoolDataSource对象
ProxoolDataSource ds = newProxoolDataSource();
ds.setDriver("com.mysql.jdbc.Driver");
ds.setDriverUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUser("[用户名]");
ds.setPassword("[密码]");


五、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


将这些jar包放到WEB-INF/lib目录下,就可以在程序中创建BoneCPDataSource对象,代码如下:

// 创建BoneCPDataSource对象
BoneCPDataSource ds = newBoneCPDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/[实例名]");
ds.setUsername("[用户名]");
ds.setPassword("[密码]");
ds.setAcquireIncrement(1);
ds.setAcquireRetryDelay(10000);
ds.setIdleConnectionTestPeriod(100);
ds.setMinConnectionsPerPartition(2);
ds.setMaxConnectionsPerPartition(20);
ds.setPartitionCount(2);


在创建完数据源之后,就可以利用jdbc在程序与数据库之间建立连接,但要注意的是,要有相关的jdbc驱动包,不同的数据库需要不同的驱动,一般在各个数据库官方网都可以获取。



赞(0)    操作        顶端 
总帖数
2
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论