`

数据连接池的基本实现 .

    博客分类:
  • Java
 
阅读更多
1、 实现途径:

编写JdbcPool implements java.sql.DataSource类

l 静态初始化块

l getConnection()

l release()

总结:

可以解决连接池的实现问题,但是必须要求编程人员熟悉JdbcPool的使用

解决此问题的方法——增强Connection的功能

2、 方案列表:

1) 编写Connection的子类,此方法理论上可以解决,但是没有可操作性,因为基本无法实现对Connection对象的初始化工作

2) 采用装饰模式

装饰模式解决方案

用包装设计模式对connnction的close方法进行增强

1.写一个类实现与被增强对象相同的接口

2.在类中定义一个变量记住被增强对象

3.在类中定义一个构造函数,接收被增强对象

4.覆盖想增强的方法

5.对于不想增强的方法,直接调用目标对象(被增强对象)的方法

总结:

装饰模式可以很好的解决问题,但是在此任然不合适,因为Connection接口中定义了太多的方法,逐个去实现非常繁琐。

3) 动态代理技术实现

public Connection getConnection() throws SQLException {

if(list.size()>0){

final Connection conn = list.removeFirst();  //mysql

System.out.println("用户从池中拿走了:" +  conn);

System.out.println("池的大小为" + list.size());

//myconnection   preparedstatement  commit close

return (Connection)Proxy.newProxyInstance(JdbcPool.class.getClassLoader(), conn.getClass().getInterfaces(), new InvocationHandler(){

public Object invoke(Object proxy, Method method, Object[] args)

throws Throwable {

if(!method.getName().equalsIgnoreCase("close")){

return method.invoke(conn, args);

}

System.out.println(conn + "被还到池中了");

list.add(conn);

System.out.println("池的大小为" + list.size());

return null;

}

});

/* MyConnection myconn = new MyConnection(conn,list);

return myconn;    //   conn = pool.getConnection();  conn.preparedstatment  conn

*/ }else{

throw new RuntimeException("对不起,数据库忙,请等会再来!!");

}

}
 
分享到:
评论

相关推荐

    数据库连接池代码实现

    以上就是数据库连接池的基本概念和实现方法。在实际开发中,我们还需要考虑连接池的监控和调优,比如监控连接池的使用情况,根据性能指标调整参数,以及处理异常和错误情况,以保证系统的稳定性和高效性。

    DBCP数据库连接池jar包.zip

    总的来说,DBCP2是一个适用于学习和小型项目的数据库连接池实现,对于初学者来说,通过这个压缩包可以了解数据库连接池的基本工作原理和使用方式,对于开发者而言,它可以提供基本的数据库连接管理功能,但可能需要...

    java 数据库 连接池驱动.rar

    - C3P0:一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 - DBCP (Apache BasicDataSource):Apache的一个开源项目,基于Jakarta Pool实现,它是Tomcat默认的数据库连接池。 ...

    Springboot多连接池.zip.zip

    在Spring Boot中,可以通过不同的数据源配置来实现这一点,每个数据源对应一个连接池。例如,你可以为MySQL数据库配置一个HikariCP,为Oracle数据库配置一个Druid。 配置多数据源的基本步骤如下: 1. 添加所需连接...

    连接池案例 连接池案例

    在实际应用中,开发者通常会在Spring框架中配置数据源,选择合适的连接池实现,如在Spring Boot项目中,可以通过YAML或properties配置文件设置连接池的相关参数: ```yaml spring: datasource: type: ...

    mysql数据连接池

    在Java、Python等编程语言中,都有相应的库或框架支持数据连接池的实现。 数据连接池的核心概念包括以下几个方面: 1. **连接池初始化**:在应用启动时,数据连接池会预先创建一定数量的数据库连接,这些连接被...

    数据连接池的工作机制

    #### 二、数据连接池的基本概念 数据连接池是一种管理数据库连接的机制,它预先创建一定数量的数据库连接并将它们存储在一个池中,供应用程序复用。当应用程序请求数据库连接时,连接池返回一个已经存在的连接,而...

    Spring各种连接池的比较.doc

    DBCP提供了一个基本的连接池实现,但如描述中提到的,它存在一个问题:在强制关闭连接或数据库重启后,无法自动重新连接。为了解决这个问题,可以配置验证查询(validationQuery)和检查连接是否可用(testOnBorrow...

    数据连接池有用的jar包

    标题提到的“数据连接池有用的jar包”指的是用于实现数据连接池功能的Java类库,这些库通常包含了处理数据库连接池所需的类和方法。 在Java编程中,常见的数据连接池实现有以下几种: 1. C3P0:这是一个开源的JDBC...

    delphi_ADO连接池测试.rar

    连接池的基本思想是复用已存在的数据库连接,避免频繁地创建和关闭连接带来的开销。在多线程环境中,连接池能够确保并发访问时的资源安全,提高系统效率。在Delphi中,我们可以利用TADOConnection等ADO组件来构建...

    c3p0连接池使用方法.rar_连接池实现

    c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。使用c3p0连接池可以有效地管理和优化数据库连接,提高系统的性能和稳定性。以下是关于c3p0连接池的详细使用步骤和关键配置...

    java socket连接池 实现

    Java Socket 连接池实现是提高网络应用性能和效率的关键技术之一。在高并发的网络环境中,频繁地创建和销毁Socket连接会导致大量的系统资源浪费,影响整体性能。为了解决这个问题,开发人员通常会使用连接池来管理和...

    tomcat连接池配置方法.rar

    2. **Tomcat内置的连接池组件**:Tomcat自身提供了一个名为Apache Commons DBCP(数据库连接池)的组件,但在较新的版本中,推荐使用Apache Tomcat JDBC Connection Pool,也就是Tomcat自己的JDBC连接池实现。...

    数据库连接池的实现(java版本)

    #### 数据库连接池基本概念 在深入探讨Java版数据库连接池的具体实现之前,我们先来了解一下数据库连接池的基本概念: - **数据库连接**:应用程序与数据库之间建立的一种通信桥梁,通过该连接可以执行SQL语句、...

    连接池操作Java类.rar

    使用Java实现连接池的基本步骤如下: 1. 引入依赖:根据选择的连接池库,添加对应的Maven或Gradle依赖。 2. 配置连接池:在配置文件(如application.properties或xml)中设置数据库连接参数,如URL、用户名、密码,...

    毕业论文基于java数据库连接池的研究.docx

    数据库连接池的基本原理包括连接的初始化、获取、释放及池的维护。初始化阶段,系统启动时会创建一定数量的数据库连接放入池中。当应用需要访问数据库时,不是直接创建新连接,而是从连接池中获取一个已存在的连接。...

    JDBC专题(七)-数据库连接池 DataSource Pool.docx

    #### 三、自定义数据连接池 在实际开发过程中,有时需要根据具体的应用场景来自定义数据库连接池。例如,上文给出的示例代码展示了一个简单的自定义连接池实现: 1. **属性**:定义了一个`LinkedList<Connection>`...

    关于数据库连接池和动态数据源的实现

    数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现...

    socket 客户端连接池实现

    在Java中,可以使用Apache Commons Pool库来实现Socket连接池,或者自定义一个基于LinkedList或ConcurrentHashMap的数据结构来管理和维护连接。同时,可以结合JMX(Java Management Extensions)进行监控,查看连接...

    DBCP数据库连接池终稿.pdf

    DBCP提供了`BasicDataSource`类作为数据源,它是线程安全的,支持基本的连接池功能。通过设置`BasicDataSource`的属性,如`maxActive`(最大连接数)、`maxIdle`(最大空闲连接数)等,可以定制连接池的行为。在需要...

Global site tag (gtag.js) - Google Analytics