DBCP连接池
来源:互联网 发布:php商城开发教程 编辑:程序博客网 时间:2024/05/16 19:21
dbcp连接池
需要的架包
1.commons-dbcp.jar
2.commons-pool.jar
3.mysql-connector-java-5.0.8-bin.jar
DBCP相关配置:DBCP configuration
说明:
defaultAutoCommit: 对于事务是否 autoCommit, 默认值为 true
defaultReadOnly: 对于数据库是否只能读取, 默认值为 false
driverClassName:连接数据库所用的 JDBC Driver Class,
maxActive: 连接池的最大数据库连接数。设为0表示无限制,默认为8
maxIdle: 最大等待连接中的数量,设 0 为没有限制 (对象池中对象最大个数)
minIdle:对象池中对象最小个数
maxWait: 最大等待秒数, 单位为 ms, 超过时间会丟出错误信息
password: 登陆数据库所用的密码
url: 连接数据库的 URL
username: 登陆数据库所用的帐号
validationQuery: 验证连接是否成功,该选项用来验证数据库连接的有效性, SQL SELECT 指令至少要返回一行
removeAbandoned: 是否自我中断, 默认是 false
removeAbandonedTimeout: 几秒后会自我中断, removeAbandoned 必须为 true
logAbandoned: 是否记录中断事件, 默认为 false
minEvictableIdleTimeMillis:大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟
timeBetweenEvictionRunsMillis:失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程,默认-1
testOnBorrow:取得对象时是否进行验证,检查对象是否有效,默认为false
testOnReturn:返回对象时是否进行验证,检查对象是否有效,默认为false
testWhileIdle:空闲时是否进行验证,检查对象是否有效,默认为false
initialSize:初始化线程数一。通过直接配置数据库属性连接- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.ArrayList;
- import java.util.List;
-
-
- import org.apache.commons.dbcp.BasicDataSource;
- import org.apache.commons.dbcp.DataSourceConnectionFactory;
- class dbcputils {
- private static dbcputils dbcp=null;
- private BasicDataSource dbs=null;
- private DataSourceConnectionFactory dscf=null;
- public dbcputils(){
- if(dbs==null){
- dbs=new BasicDataSource();
- dbs.setUsername("root");
- dbs.setPassword("jarrem");
- dbs.setUrl("jdbc:mysql://127.0.0.1:3306/tang");
- dbs.setDriverClassName("com.mysql.jdbc.Driver");
- dbs.setMaxActive(11);
- dbs.setInitialSize(10);
- dbs.setMaxIdle(5);
- dbs.setMinIdle(3);
- dscf=new DataSourceConnectionFactory(dbs);
- System.out.println("初始化实例了");
- }
- }
- public dbcputils getInstance(){
- if(dbcp==null){
- dbcp=new dbcputils();
- System.out.println("getInstance初始化实例了");
- }
- return dbcp;
- }
- public Connection getConnection(){
- Connection connection=null;
- try {
- connection = dscf.createConnection();
- } catch (SQLException e) {
-
- System.out.println("获取Connection失败!");
- e.printStackTrace();
- }
- return connection;
- }
- public static void main(String[] args){
- dbcputils dp=new dbcputils();
- long begin=System.currentTimeMillis();
- List list=new ArrayList();
- Connection connection = dp.getInstance().getConnection();
- try {
- PreparedStatement ps = connection.prepareStatement("select * from user;");
- ResultSet result = ps.executeQuery();
- while(result.next()){
- list.add(result);
- System.out.println(result.getString(1));
- }
- for(Object o:list){
- System.out.println(list.toString());
- }
- connection.close();
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
-
- long end=System.currentTimeMillis();
- System.out.println(end-begin);
- }
- }
二.通过properties文件配置数据库- import java.io.FileInputStream;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.Properties;
- import javax.sql.DataSource;
- import org.apache.commons.dbcp.BasicDataSource;
- import org.apache.commons.dbcp.BasicDataSourceFactory;
- import org.apache.commons.dbcp.DataSourceConnectionFactory;
- public class dbcpPool {
- private BasicDataSource bds=null;
- private DataSourceConnectionFactory dscf=null;
- private Properties properties=null;
- private DataSource DataSource=null;
- private static Connection connection=null;
- public dbcpPool(){
- if(bds==null){
- bds=new BasicDataSource();
- properties=new Properties();
- FileInputStream in;
- try {
-
- in = new FileInputStream("C:\\Users\\lenovo\\Workspaces\\MyEclipse Professional 2014\\DatabaseConnectionPool\\src\\com\\tang\\dbpcPool2\\link.properties");
- properties.load(in);
- DataSource = BasicDataSourceFactory.createDataSource(properties);
- connection = DataSource.getConnection();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
- }
- public static void main(String args[]){
- try {
- new dbcpPool();
- PreparedStatement statement = connection.prepareStatement("select * from user;");
- ResultSet result = statement.executeQuery();
- while(result.next()){
- System.out.println(result.getString(1)+" "+result.getString(2));
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }