视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
黑马程序员JDBC_如何使用开源项目DBCP(实际项目中常用)(李勇
2020-11-09 07:46:22 责编:小采
文档

lDataSource用来取代DriverManager来获取Connection; l通过DataSource获得Connection速度很快; l通过DataSource获得的Connection都是已经被包裹过的(不是 驱动原来的连接),他的close方法已经被修改。 l一般DataSource内部会用一个连接池来缓存Connection

lDataSource用来取代DriverManager来获取Connection;

l通过DataSource获得Connection速度很快;

l通过DataSource获得的Connection都是已经被包裹过的(不是
驱动原来的连接),他的close方法已经被修改。

l一般DataSource内部会用一个连接池来缓存Connection,这样

可以大幅度提高数据库的访问速度;

l连接池可以理解成一个能够存放Connection的Collection;

l我们的程序只和DataSource打交道,不会直接访问连接池;

使用DBCP步骤如下,三步:
l使用DBCP必须用的三个包:

commons-dbcp-1.2.1.jar,

commons-pool-1.2.jar,

commons-collections-3.1.jar。

l配置参数。
lJavaAPI:BasicDataSourceFactory.createDataSource(

properties);

2.dbcpconfig.properties配置文件内容:

#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc
username=root
password=root

#
initialSize=10

#最大连接数量
maxActive=50

#
maxIdle=20

#
minIdle=5

#
maxWait=60000

#JDBC驱动建立连接时附带的连接属性属性的格式必须为这样:[属性名=property;]
#注意:"user" 与 "password" 两个属性会被明确地传递,因此这里不需要包含他们。
connectionProperties=useUnicode=true;characterEncoding=gbk

#指定由连接池所创建的连接的自动提交(auto-commit)状态。
defaultAutoCommit=true

#driver default 指定由连接池所创建的连接的只读(read-only)状态。
#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)
defaultReadOnly=

#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。
#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=READ_UNCOMMITTED

3.不需要再写数据源,直接用

public final class JdbcUtils {

	private static DataSource myDataSource = null;

	private JdbcUtils() {
	}

	static {
	try {
	Class.forName("com.mysql.jdbc.Driver");
	// myDataSource = new MyDataSource2();

	Properties prop = new Properties();
	// prop.setProperty("driverClassName", "com.mysql.jdbc.Driver");
	// prop.setProperty("user", "user");

	InputStream is = JdbcUtils.class.getClassLoader()
	.getResourceAsStream("dbcpconfig.properties");
	prop.load(is);
	myDataSource = BasicDataSourceFactory.createDataSource(prop);//创建数据源,一句代码就完成
	} catch (Exception e) {
	throw new ExceptionInInitializerError(e);
	}
	}

	public static DataSource getDataSource() {
	return myDataSource;
	}

	public static Connection getConnection() throws SQLException {
	// return DriverManager.getConnection(url, user, password);
	return myDataSource.getConnection();
	}

	public static void free(ResultSet rs, Statement st, Connection conn) {
	try {
	if (rs != null)
	rs.close();
	} catch (SQLException e) {
	e.printStackTrace();
	} finally {
	try {
	if (st != null)
	st.close();
	} catch (SQLException e) {
	e.printStackTrace();
	} finally {
	if (conn != null)
	try {
	conn.close();
	// myDataSource.free(conn);
	} catch (Exception e) {
	e.printStackTrace();
	}
	}
	}
	}
}

4.测试

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

for (int i = 0; i < 10; i++) {

Connection conn = JdbcUtils.getConnection();

System.out.println(conn);

JdbcUtils.free(null, null, conn);

}

}

下载本文
显示全文
专题