连接池:PoolManager.java
package com.student.comm;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.apache.commons.dbcp.ConnectionFactory;
import org.apache.commons.dbcp.DriverManagerConnectionFactory;
import org.apache.commons.dbcp.PoolableConnectionFactory;
import org.apache.commons.dbcp.PoolingDriver;
import org.apache.commons.pool.ObjectPool;
import org.apache.commons.pool.impl.GenericObjectPool;
public class PoolManager {
private static String driver = "com.mysql.jdbc.Driver",//驱动
url = "jdbc:mysql://localhost:3306/student",//URL
Name = "root",//用户名
Password = "root";//密码
private static Class driverClass = null;
private static ObjectPool connectionPool = null;
public PoolManager() {
}
/**
* 装配配置文件
* initProperties
*/
private static void loadProperties() {
try {
java.io.InputStream stream = new java.io.FileInputStream(
"config.properties");
java.util.Properties props = new java.util.Properties();
props.load(stream);
//取config.properties配置文件的信息
driver = props.getProperty("MYSQL_DRIVER");
url = props.getProperty("MYSQL_URL");
Name = props.getProperty("MYSQL_LOGIN_NAME");
Password = props.getProperty("MYSQL_LOGIN_PASSWORD");
} catch (FileNotFoundException e) {
System.out.println("读取配置文件异常");
} catch (IOException ie) {
System.out.println("读取配置文件时IO异常");
}
}
/**
* 初始化数据源
*/
private static synchronized void initDataSource() {
if (driverClass == null) {
try {
driverClass = Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
/**
* 连接池启动
* @throws Exception
*/
public static void StartPool() {
loadProperties();
initDataSource();
if (connectionPool != null) {
ShutdownPool();
}
try {
connectionPool = new GenericObjectPool(null);
ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
url, Name, Password);
PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
connectionFactory, connectionPool, null, null, false, true);
Class.forName("org.apache.commons.dbcp.PoolingDriver");
PoolingDriver driver = (PoolingDriver) DriverManager
.getDriver("jdbc:apache:commons:dbcp:");
driver.registerPool("dbpool", connectionPool);
System.out.println("装配连接池OK");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 释放连接池
*/
public static void ShutdownPool() {
try {
PoolingDriver driver = (PoolingDriver) DriverManager
.getDriver("jdbc:apache:commons:dbcp:");
driver.closePool("dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 取得连接池中的连接
* @return
*/
public static Connection getConnection() {
Connection conn = null;
if (connectionPool == null)
StartPool();
try {
conn = DriverManager
.getConnection("jdbc:apache:commons:dbcp:dbpool");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/**
* 获取连接
* getConnection
* @param name
* @return
*/
public static Connection getConnection(String name) {
return getConnection();
}
/**
* 释放连接
* freeConnection
* @param conn
*/
public static void freeConnection(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 释放连接
* freeConnection
* @param name
* @param con
*/
public static void freeConnection(String name, Connection con) {
freeConnection(con);
}
public static void main(String[] args) {
try {
Connection conn = PoolManager.getConnection();
if(conn != null){
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery("select * from article");
int c = rs.getMetaData().getColumnCount();
while(rs.next()){
for(int i=1;i<=c;i++){
System.out.print(rs.getObject(i));
}
}
rs.close();
}
PoolManager.freeConnection(conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
并在当前目录下建config.properties文件。
MYSQL_DRIVER = com.mysql.jdbc.Driver
MYSQL_URL = jdbc:mysql://localhost:3306/xbj
MYSQL_LOGIN_NAME = root
MYSQL_LOGIN_PASSWORD = root
分享到:
相关推荐
配置好这些jar包后,你可以在Java代码或应用服务器的配置文件中设置DBCP连接池的参数,然后在需要的地方通过DataSource对象获取数据库连接。 总的来说,DBCP连接池是Java Web开发中管理数据库连接的重要工具,通过...
DBCP(Jakarta DBCP)是Apache软件基金会提供的一个开源数据库连接池实现,它基于Jakarta Commons Pool对象池机制,提供了一种有效管理数据库连接的方式。 在Java应用程序中,频繁地创建和关闭数据库连接会消耗大量...
DBCP连接池的工作原理是预先创建一定数量的数据库连接,将这些连接存储在一个池中,当应用需要连接数据库时,可以从池中获取一个已存在的连接,使用完毕后再归还到池中,而不是每次操作数据库都创建新的连接。...
在实际应用中,DBCP连接池的配置可以通过XML或者Java代码进行。例如,以下是一个基本的XML配置示例: ```xml <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close"> ...
总的来说,Java DBCP连接池是Java应用中管理和优化数据库连接的有效工具,通过合理配置和使用,能够显著提升应用的数据库访问性能,同时降低资源消耗。在实际开发中,开发者应根据项目需求和性能要求选择合适的连接...
### DBCP连接池原理分析 #### DBCP概述与版本区分 DBCP(Database Connection Pool)是由Apache组织提供的一款开源连接池实现。它能够帮助应用程序有效地管理与数据库的连接资源,通过重用预创建的数据库连接来...
DBCP(Database Connection Pool)是Apache组织提供的一种开源数据库连接池组件,主要...总的来说,DBCP连接池是Java应用程序中用于高效管理数据库连接的重要工具,通过合理的配置和使用,可以显著提升系统运行效率。
DBCP(Database Connection Pool)是Apache Commons项目中的一个数据库连接池组件,主要目的是为了提高数据库连接的复用性,减少创建和销毁连接的开销,从而提升应用的性能。DBCP2是其第二个主要版本,提供了更稳定...
**DBCP连接池的工作原理:** 1. **初始化**:在应用程序启动时,DBCP会预先创建一定数量的数据库连接并放入连接池。 2. **请求连接**:当程序需要与数据库交互时,它向连接池请求一个连接。连接池检查是否有空闲的...
在SSH(Spring、Struts和Hibernate)这样的经典企业级开发框架中,DBCP连接池是一个常用的数据库管理工具。 1. **数据库连接池概念**:数据库连接池是在应用服务器启动时创建的,它会预先建立一定数量的数据库连接...
在使用DBCP连接池之前,我们需要将必要的jar包添加到项目的类路径中。这些jar包通常包括以下几个核心组件: 1. `commons-dbcp.jar`:这是DBCP的主要库,包含了连接池的核心实现。这个文件提供了创建、配置和管理...
在这个"dbcp连接池使用例子"中,我们将深入理解DBCP的工作原理、配置方法以及如何在实际项目中集成和使用。 DBCP连接池的基本概念: 1. 数据库连接池:在应用程序启动时,预先创建并维护一定数量的数据库连接,这些...
**DBCP连接池详解** DBCP(Database Connection Pool)是Apache组织提供的一个开源数据库连接池组件,全称为Apache Commons DBCP。它基于Jakarta-DBCP,是Java应用程序中管理数据库连接的一种高效方式,通过复用已...
本压缩包包含了使用DBCP连接池所需的三个关键jar文件:`commons-dbcp-1.4.jar`、`commons-collections-3.2.1.jar`和`commons-pool-1.5.6.jar`。 1. `commons-dbcp-1.4.jar`:这是DBCP的主要库文件,提供了数据库...
标题"commons中的DBCP连接池jar"指的是Apache Commons DBCP的Java归档文件(JAR),它是Java应用程序可执行的二进制格式。这些JAR文件包括: 1. `commons-dbcp-1.4-javadoc.jar`:这个文件包含了DBCP 1.4版本的API...
通过这种方式,开发者只需要关注业务逻辑,无需关心数据库连接的细节,提高了代码的可读性和可维护性,同时也充分利用了DBCP连接池带来的性能优势。 总结,JDBC小组件对DBCP连接池的封装是Java数据库开发中一种有效...
在本项目中,您分享的是一个自定义封装的DBCP连接池,它具有同时连接多个数据库的功能。这个特性对于那些需要处理多种数据库的应用来说非常有用,例如数据集成、数据迁移或多数据源分析等场景。以下是对这个封装的...
以下是一个简单的DBCP连接池示例代码: ```java package cn.songxinqiang.samples.commonsdbcp.util; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.SQLException; import java...
使用DBCP连接池时,开发者通常需要编写配置代码,例如使用XML配置文件或者在代码中直接配置。下面是一个简单的XML配置示例: ```xml <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" ...