basicdatasourcefactory mysql_MySQL---數據庫從入門走向大神系列(十三)-BasicDataSource創建DataSource(DBCP連接池配置)...

本文详细介绍了Apache DBCP(Database Connection Pooling)连接池的工作原理,包括其在减少数据库连接创建开销、提高应用程序性能方面的优势,并展示了两种配置方式:纯Java代码和通过配置文件。还讨论了DataSource的管理与获取连接的方法。
摘要由CSDN通过智能技术生成

DBCP(DataBase connection pool),數據庫連接池。是 apache 上的一個 java 連接池項目,也是 tomcat 使用的連接池組件。單獨使用dbcp需要2個包:commons-dbcp.jar,commons-pool.jar由於建立數據庫連接是一個非常耗時耗資源的行為,所以通過連接池預先同數據庫建立一些連接,放在內存中,應用程序需要建立數據庫連接時直接到連接池中申請一個就行,用完后再放回去。

首先,下載必須的jar包

MySQL的jar包mysql-connector-java-5.1.39-bin目前是5.1.39版本:

http://dev.mysql.com/downloads/connector/j/

演示代碼:package cn.hncu.dbcp;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

import org.junit.Test;

public class DbcpPoolDemo {

// 純Java方式設置參數,使用dbcp池

@Test

public void testDbcp() {

BasicDataSource pool = new BasicDataSource();// 連接池

pool.setUsername("root");

pool.setPassword("1234");

pool.setDriverClassName("com.mysql.jdbc.Driver");

pool.setUrl("jdbc:mysql://127.0.0.1:3306/hncu?useUnicode=true&characterEncoding=utf-8");

System.out.println(pool.getMaxIdle());// 最大空閑時間。如果一個用戶獲取一個連接,不用,多長時間會被強行收回

System.out.println(pool.getMaxWaitMillis());// 在拋出異常之前,池等待連接被回收的最長時間(當沒有可用連接時)。設置為-1表示無限等待。

System.out.println(pool.getInitialSize());// 初始化時有幾個Connection

System.out.println(pool.getMaxTotal());// 最多能有多少個Connection

System.out.println("----------------");

// pool.setMaxTotal(20);//可以我們自己設置池的相關參數,如最大連接數

// 從它的池中獲取連接

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

Connection con = null;

try {

con = pool.getConnection();

} catch (SQLException e) {

e.printStackTrace();

}

System.out.println(i + ":" + con.hashCode());

}

}

// 通過配置文件方式設置參數,使用dbcp池

@Test

public void testPropertyFile() throws Exception {

Properties p = new Properties();

p.load(DbcpPoolDemo.class.getResourceAsStream("dbcp.properties"));// 配置文件和當前類的class放在一起

// p.load(DbcpPoolDemo.class.getClassLoader().getResourceAsStream("dbcp.properties"));//配置文件要放在src(bin)的根目錄---classpath的根

DataSource pool = BasicDataSourceFactory.createDataSource(p);

// 從它的池中獲取連接

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

Connection con = pool.getConnection();

System.out.println(con.hashCode());

if (i % 2 == 0) {

con.close();

}

}

}

}

一開始,默認的可以new的Connection對象為8個!

而且就算你是剛把原來的connection對象.close()也不會拿到重復Connection對象,以前的版本是會拿到原來還回去的Connectin對象的。

Connection池-本地線程管理對象package cn.hncu.dbcp;

import java.io.IOException;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

public class DbcpUtil {

private static DataSource pool;

private static ThreadLocal t = new ThreadLocal();

static{

try {

//讀取配置文件

Properties p = new Properties();

p.load(DbcpUtil.class.getResourceAsStream("dbcp.properties"));// 配置文件和當前類的class放在一起

pool = BasicDataSourceFactory.createDataSource(p);

} catch (IOException e) {

e.printStackTrace();

} catch (Exception e) {

e.printStackTrace();

}

}

//返回DataSource--池

public static DataSource getDataSource(){

return pool;

}

public static Connection getConnection() throws SQLException{

//從本地線程管理對象t中拿

Connection con = t.get();

if(con==null){

con=pool.getConnection();

//放入t中

t.set(con);

}

return con;

}

}

相對於自己寫Connection池,用第三方的擴展包顯然方便多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
applicationContext-datasource.xml 是一个 Spring 的配置文件,用于配置数据源相关的信息。在该文件中,你可以配置数据源、事务管理器以及其他与数据库相关的配置。 以下是一个简单的 applicationContext-datasource.xml 配置文件示例: ```xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mydatabase" /> <property name="username" value="root" /> <property name="password" value="password" /> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 其他相关配置 --> <!-- ... --> </beans> ``` 在实际项目中,你可能需要根据实际需求配置更多的内容,例如数据源连接池的配置、数据源的引用、数据访问对象的配置等。根据具体情况进行相应的配置即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值