【JDBC学习总结】7.开源连接池介绍


一、DBCP数据库连接池

关于commons-pool

创建新的对象并初始化的操作,可能会消耗很多的时间。在需要频繁创建并使用这些对象的场景中,为了提供系统性能,通常的做法是,创建一个对象池,将一定数量的对象缓存到这个对象池中。需要使用时直接从对象池中取出对象,使用完后将对象扔回到对象池中即可。Apache的commons pool组件是我们实现对象池化技术的良好助手。dbcp内部的数据库连接管理依赖于commons-pool

关于commons-dbcp版本区别

而commons-dbcp现在分成了2个大版本,不同的版本要求的JDK不同:
DBCP 2.X compiles and runs under Java 7 only (JDBC 4.1)
DBCP 1.4 compiles and runs under Java 6 only (JDBC 4)

参数配置见官网

http://commons.apache.org/proper/commons-dbcp/configuration.html

环境设置

以下为maven,会自动下载dbcp2和它的依赖:
commons-dbcp2-2.1.jar
commons-pool2-2.3.jar
commons-logging-1.2.jar
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-dbcp2</artifactId>
	<version>2.1</version>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.36</version>
</dependency>


数据库:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL,
  `name` varchar(45) DEFAULT NULL,
  `password` varchar(45) DEFAULT NULL,
  `phone` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '蓝色洛可可', 'abc', '13200001111');
INSERT INTO `user` VALUES ('2', '影魔', 'zxc', '13212341234');

快速入门(妈蛋,把url和驱动写反了,测试了一个小时)

public class App {
	public static void main(String[] args) throws Exception {
		BasicDataSource bds=new BasicDataSource();
		bds.setDriverClassName("com.mysql.jdbc.Driver");
		bds.setUrl("jdbc:mysql://localhost:3306/jdbcstudy");
		bds.setUsername("root");
		bds.setPassword("123456");
		
		Connection conn=bds.getConnection();
		PreparedStatement pst=conn.prepareStatement("select * from user");
		ResultSet rs=pst.executeQuery();
		while(rs.next()){
			System.out.println(rs.getString("name")+rs.getString("phone"));
		}
		
		rs.close();
		pst.close();
		conn.close();
		bds.close();
		
	}
}

当然,你也可以使用外部属性文件建立数据源,那就要用BasicDataSourceFactory的createDataSource(prosperties)方法了。
import java.io.*;
import java.sql.*;

import java.util.Properties;

import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;


public class Test {

	public static void main(String[] args) throws Exception {
		
		Properties pros=new Properties();
		pros.load(new FileInputStream("E:\\mydata\\test-dbcp2\\src\\dbcp.properties"));
//		或者pros.load(Test.class.getResourceAsStream("dbcp.properties"));

		BasicDataSource bds=BasicDataSourceFactory.createDataSource(pros);
		
		
		Connection conn=bds.getConnection();
		//do some things
		conn.close();
		bds.close();
	}

}
外部属性文件自己实现吧!

二、C3P0数据库连接池

待更新

三、Tomcat数据库连接池与JNDI

待更新

你可能感兴趣的:(【JDBC学习总结】7.开源连接池介绍)