JavaWeb之JDBC连接池

1.DBCP

导包:commons-dbcp2-2.1.1.jar、commons-pool2-2.4.2.jar、mysql-connector-java-5.1.40-bin.jar

package zh.dbcp.demo;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import org.apache.commons.dbcp2.BasicDataSource;

/**
 * BasicDataSource,手动设置连接池信息
 * @author ZH
 *
 */
public class DBCPDemo1 {

	public static void main(String[] args) {

		BasicDataSource dataSource = new BasicDataSource();
		dataSource.setDriverClassName("com.mysql.jdbc.Driver");
		dataSource.setUrl("jdbc:mysql://localhost:3306/day0528");
		dataSource.setUsername("root");
		dataSource.setPassword("zh1277718668");
		dataSource.setInitialSize(10);
		dataSource.setMaxIdle(3);

		Connection connection = null;
		try {
			connection = dataSource.getConnection();
			DatabaseMetaData metaData = connection.getMetaData();
			
			System.out.println(connection);
			System.out.println(metaData.getDriverName());
			System.out.println(metaData.getURL());
			System.out.println(metaData.getUserName());
			
//			804611486, URL=jdbc:mysql://localhost:3306/day0528, UserName=root@localhost, MySQL Connector Java
//			MySQL Connector Java
//			jdbc:mysql://localhost:3306/day0528
//			root@localhost
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				dataSource.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}

	}

}

或者


package zh.dbcp.demo;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.util.Properties;

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

/**
 * BasicDataSourceFactory,使用配置文件
 * 
 * @author ZH
 *
 */
public class DBCPDemo2 {

	public static void main(String[] args) {

		ClassLoader classLoader = DBCPDemo2.class.getClassLoader();
		InputStream in = classLoader
				.getResourceAsStream("zh/dbcp/demo/dbcp.properties");

		Properties prop = new Properties();
		try {
			prop.load(in);
		} catch (IOException e) {
			e.printStackTrace();
		}

		BasicDataSource dataSource = null;
		Connection connection = null;
		DatabaseMetaData metaData = null;
		try {
			// BasicDataSourceFactory 静态方法创建BasicDataSource
			dataSource = BasicDataSourceFactory.createDataSource(prop);
			connection = dataSource.getConnection();
			metaData = connection.getMetaData();

			System.out.println(connection);
			System.out.println(metaData.getDriverName());
			System.out.println(metaData.getURL());
			System.out.println(metaData.getUserName());

//			21257599, URL=jdbc:mysql://localhost:3306/day0528, UserName=root@localhost, MySQL Connector Java
//			MySQL Connector Java
//			jdbc:mysql://localhost:3306/day0528
//			root@localhost
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

2.C3P0

导包:c3p0-0.9.5.2.jar、mysql-connector-java-5.1.40-bin.jar

在src下导入c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 默认配置,当使用ComboPooledDataSource无参构造器时,使用的就是这个配置 -->
	<default-config>
		<!-- 基本配置 -->
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/day0528</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">zh1277718668</property>
		<!-- 每次增量,当需要创建Connection对象时,一次创建几个 -->
		<property name="acquireIncrement">3</property>
		<!-- 当创建池对象后,池中应该有几个Connection对象 -->
		<property name="initialPoolSize">10</property>
		<!-- 池中最少Connection个数,如果少于这个值,就会创建Connection -->
		<property name="minPoolSize">2</property>
		<!-- 池中最大连接个数 -->
		<property name="maxPoolSize">10</property>
	</default-config>
	<!-- 命名配置,new ComboPooledDataSource("customize")时,使用的就是这个配置 -->
	<named-config name="customize">
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/day0528</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">zh1277718668</property>
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</named-config>
</c3p0-config>
package zh.c3p0.demo;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * c3p0连接池
 * 
 * @author ZH
 *
 */
public class C3P0Demo1 {

	public static void main(String[] args) throws SQLException {

		// 记载默认配置
		ComboPooledDataSource dataSource1 = new ComboPooledDataSource();
		// 加载自定义配置
		ComboPooledDataSource dataSource2 = new ComboPooledDataSource("customize");

		Connection connection1 = dataSource1.getConnection();
		DatabaseMetaData metaData1 = connection1.getMetaData();
		System.out.println(connection1);
		System.out.println(metaData1.getDriverName());
		System.out.println(metaData1.getURL());
		System.out.println(metaData1.getUserName());
		
//		com.mchange.v2.c3p0.impl.NewProxyConnection@50675690 [wrapping: com.mysql.jdbc.JDBC4Connection@31b7dea0]
//		MySQL Connector Java
//		jdbc:mysql://localhost:3306/day0528
//		root@localhost
		
		Connection connection2 = dataSource2.getConnection();
		DatabaseMetaData metaData2 = connection2.getMetaData();
		System.out.println(connection2);
		System.out.println(metaData2.getDriverName());
		System.out.println(metaData2.getURL());
		System.out.println(metaData2.getUserName());

//		com.mchange.v2.c3p0.impl.NewProxyConnection@387c703b [wrapping: com.mysql.jdbc.JDBC4Connection@224aed64]
//		MySQL Connector Java
//		jdbc:mysql://localhost:3306/day0528
//		root@localhost
	}

}

猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80496314