几种经常使用的Java数据源解决方案 java
Java中的数据源就是javax.sql.DataSource。DataSource的建立能够有不一样的实现。 mysql
JNDI方式建立DataSource web
以JNDI方式建立数据源首先要配置数据源的相关链接信息,也就是数据源链接池。该配置应该在Tomcat安装目录下的conf/context.xml文件中配置。其配置以下: sql
<Context> 数据库
…… apache
<!-- MySql --> api
<Resource name="jdbc/NutzDemo" auth="Container" 框架
type="javax.sql.DataSource"maxActive="100" maxIdle="30" post
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.DataSource。DataSource了,而是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);