创建一个自己的数据库连接池类(为JDBC工具类服务:创建Connection,关闭Connection):
package com.mengya.JDBCUtil;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.Properties;
public class DataSource {
private InputStream instream;
private Properties pro;
private static int initCount = 5;// 初始连接数
private static int maxCount = 10;// 数据库最大连接数
private static int currentConnt = 0;// 当前数据库的连接数
LinkedList<Connection> connectionPool = new LinkedList<Connection>();// 数据库连接池
// 同包才能方问该类
DataSource() {
instream = this.getClass().getResourceAsStream("/system.properties");
pro = new Properties();
try {
pro.load(instream);
try {
Class.forName(pro.getProperty("driver"));
for(int i=1;i<=initCount;i++){
this.connectionPool.addLast(this.CreateConnection());
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
throw new RuntimeException("加载数据库驱动时出错!");
}
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException("加载配置文件出错!");
}
}
// 释放数据库的连接
public void freeConnection(Connection conn) {
this.connectionPool.addLast(conn); //仍然放到数据库连接池中去了,也没有关掉,这样就可以重复使用
}
// 创建数据库的连接
private Connection CreateConnection() {
Connection conn = null;
try {
conn = DriverManager.getConnection(pro.getProperty("url"), pro
.getProperty("username"), pro.getProperty("password"));
currentConnt++;
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("创建数据库连接失败!");
}
return conn;
}
// 得到数据库的连接
public Connection getConnection() {
synchronized (connectionPool) {
if (connectionPool.size() > 0) {
return connectionPool.removeFirst();
}
if (currentConnt < maxCount) {
return this.CreateConnection();
}
throw new RuntimeException("数据库已达到最大的连接数!");
}
}
}
再创建一个JDBC工具类,在DAO中就调用该工具类中的方法
package com.mengya.JDBCUtil;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public final class SQLConnectionUitl {
private static SQLConnectionUitl sqlconn;
private DataSource myDataSource;
// 私有构造方法
private SQLConnectionUitl() {
myDataSource = new DataSource();
}
// 单例模式,让SQLConnectionUitl只实例化一次,这样数据库驱动也只加载一次.
public static SQLConnectionUitl getSQLConnectionUitl() {
if (sqlconn == null) {
synchronized (SQLConnectionUitl.class) {
if (sqlconn == null) {
sqlconn = new SQLConnectionUitl();
}
}
}
return sqlconn;
}
// 得到数据库的连接
package com.mengya.JDBCUtil;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public final class SQLConnectionUitl {
private static SQLConnectionUitl sqlconn;
private DataSource myDataSource;
// 私有构造方法
private SQLConnectionUitl() {
myDataSource = new DataSource();
}
// 单例模式,让SQLConnectionUitl只实例化一次,这样数据库驱动也只加载一次.
public static SQLConnectionUitl getSQLConnectionUitl() {
if (sqlconn == null) {
synchronized (SQLConnectionUitl.class) {
if (sqlconn == null) {
sqlconn = new SQLConnectionUitl();
}
}
}
return sqlconn;
}
// 得到数据库的连接
public Connection getSQLConnection() {
Connection conn = null
分享到:
相关推荐
在描述中提到的几个数据库连接池,是提高数据库访问性能的重要工具。数据库连接池在初始化时会创建一定数量的数据库连接并保存起来,当应用程序需要连接时,可以从池中获取一个已存在的连接,而不是每次都去新建,用...
Java JDBC 数据库连接池总结 Java 语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁。在 Web 应用开发的早期,主要使用的技术是 CGIASPPHP 等。之后,Sun 公司推出了基于 Java 语言的 ...
Java JDBC 数据库连接池总结 Java JDBC 数据库连接池是 Java 应用程序访问数据库的基本原理之一。Java 语言通过 JDBC 技术访问数据库,JDBC 是一种“开放”的方案,为数据库应用开发人员和数据库前台工具开发人员...
使用Druid数据库连接池操作步骤:完成Druid的jar包加载,写入配置文件properties,新建properties对象,使用load加载配置文件,使用DruidDataSourceFactory获取连接池对象,使用getConnection获取Connection连接,...
Durid,全称为 Distributed Universal JDBC,是阿里巴巴开源的一个高性能、分布式、可扩展的数据库连接池组件。它在设计上借鉴了C3P0、DBCP等成熟的数据源管理方案,并在此基础上进行了优化和增强,提供了更强大的...
JDBC工具类使用阿里巴巴的数据库连接池Druid,支持高并发,有多线程环境下的事务和查询测试。
jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。
在数据库连接池的上下文中,代理类会拦截数据库连接的打开和关闭操作,实现在合适的时间点真正地打开或关闭连接,而用户仍可以像使用普通数据库连接一样操作。代理类通常会在初始化时获取真实连接,当用户调用`get...
总的来说,C3P0作为一款成熟的数据库连接池,对于Java开发者来说,是一个值得信赖的工具,可以帮助我们更有效地管理和使用数据库连接,提升应用程序的性能和可靠性。在实际项目中,根据具体需求合理配置C3P0,可以更...
总的来说,DBCP数据库连接池是Java应用程序中提高数据库访问效率的重要工具,通过合理配置和使用,可以显著优化数据库操作性能,降低系统资源消耗。在实际项目中,根据具体需求选择合适的数据库连接池组件,对于提升...
这是 C3P0 数据库连接池的依赖库,主要用于提供一些通用的工具类和异常处理。C3P0 使用这个库来完成对数据库连接的管理。 3. C3P0 (c3p0-0.9.5.2.jar): C3P0 是一个开源的 JDBC 连接池,它实现了数据源和 JNDI ...
总的来说,"数据库连接池 jar包"是提升数据库访问效率和降低资源消耗的重要工具,正确理解和使用连接池对于优化Java应用程序的性能至关重要。通过合理配置和管理连接池,我们可以确保数据库连接的高效利用,同时保证...
JDBC工具类使用阿里巴巴的数据库连接池Druid,支持高并发,支持多线程环境下的事务和查询测试。
数据库连接池是一种管理数据库连接的技术,它可以复用预创建的数据库连接,而不是每次请求时都创建新的连接。这有助于减少数据库连接的开销,提高系统的性能和响应速度。常见的数据库连接池有C3P0、DBCP等。 ##### ...
总结来说,`数据库数据库连接池的jar包`这个主题涵盖了数据库连接池在Java中的重要性,以及如何使用C3P0和DBCP这两个流行的连接池实现。`dbutils`库则为数据库操作提供了便利的工具,简化了开发流程。这三个库的jar...
数据库连接池是数据库管理中的重要组成部分,它优化了数据库的性能和资源利用效率。在这个"数据库连接池包"中,包含的是c3p0数据库连接池的组件,这是一个开源的Java连接池实现,广泛用于Java应用程序中。让我们深入...
数据库连接池是现代应用程序开发...了解并正确使用数据库连接池是提高系统效率和稳定性的关键,同时,选择合适的jar包也会影响系统的整体性能。在实际项目中,应根据具体需求和性能测试结果来确定最合适的连接池实现。
JDBC数据库连接池是提升Web应用性能和稳定性的重要工具。通过合理配置和使用DbUtils等辅助库,开发者可以更高效地管理数据库连接,减少编码工作量,提高代码的健壮性和可维护性。理解和掌握JDBC连接池的配置和使用,...