0 0

连接池的Connection问题10

项目中使用了proxool数据源,配置了静态创建连接类。

 

public class DBConnection {
    public static Connection getConn() throws Exception{
         
        return DriverManager.getConnection("proxool.db_master");
         
    }
     
    public static void closeDB(Connection conn){
        try{
             
            if (conn!=null) conn.close();
             
        }catch (Exception e) {
            // TODO: handle exception
        }
    }}

 那这样使用的时候还需不需要调用Connection.close()方法呢?

try{conn.close();conn=null;}catch(Exception e){}

这个close方法是直接调用了java.sql.Connection.close()方法,这样是不是绕过连接池直接关闭 Conn了呢?

如果需要那么Connection就是我手动关闭的,跟连接池没什么关系?
如果不关闭的话那是什么时候关闭呢?
请达人给我解释一下。               

2013年4月20日 13:08

3个答案 按时间排序 按投票排序

0 0

采纳的答案

数据库连接池,就是一个放数据库连接并统一管理的池(似乎是废话),程序要用连接就跟它要,用完了还给它就行了,不需要使用者去自己关闭,那样违背了数据库连接池的初衷。

为什么使用数据库连接池?
因为数据库连接每次申请一个连接,用完后关闭连接,这两个过程其实都是非常耗费资源的,一个数据库连接其实是可以不断重复利用的。怎么重复利用呢?那就由数据库连接池来解决。数据库连接池可以启动时就初始化一些连接,程序要用时到池里来拿,拿完还回池里,给后面的程序用,这样就实现了重复利用节省时间和性能损耗。同时数据库连接池会有最大连接数,防止数据库连接耗尽导致数据库不可用的严重问题。

当然,数据库连接池的实现中还有各种各样的策略,都是为了满足各种需求。

详细再看看数据库连接池的原理。

Java中数据库连接池原理机制的详细讲解
http://blog.csdn.net/ilibaba/article/details/3996962

2013年4月20日 13:33
1 0

proxool是个连接池,那么从连接池里获取的连接到底是原生的Connection,还是代理的Connection呢?

实际上,proxool返回的是个代理的Connection,虽然你调用了closeDB方法,但是你关闭的仅仅是代理Connection。而proxool底层实际Connection还是没有关闭。它仅仅是关闭所有的statement,重置connection的代理,并修改状态active为available。并没有调用底层(数据库驱动实现的Connection接口实例的close方法)

只有你调用removeProxyConnection方法才会真正关闭。

一般你不需要自己去执行,因为既然是个连接池,它会给你管理好connection的。

2013年4月20日 13:33
0 0

不要去调用java.sql.Connection.close()方法,你直接把连接关闭了,已经失去了利用连接池的好处,你应该调用连接池提供的释放连接方法。

2013年4月20日 13:30

相关推荐

    java数据库连接池connectionPool.zip

    java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip java数据库连接池connectionPool.zip

    okhttp中连接池实现

    它的核心特性之一就是连接池(Connection Pool),它在提高网络性能和减少延迟方面起到了关键作用。本文将深入探讨OkHttp中的连接池实现,包括连接对象的添加、移除机制以及其工作原理。 首先,我们需要了解什么是...

    java数据库连接池connectionPool.jar

    Java数据库连接池(Connection Pool)是Java应用程序管理数据库连接的一种高效方法。在Java中,连接池的概念是为了优化数据库访问性能,避免频繁创建和关闭数据库连接而导致的资源浪费。`connectionPool.jar`是一个...

    连接池案例 连接池案例

    在IT行业中,数据库连接池是优化数据库访问性能和资源管理的重要技术。连接池的基本思想是重用已建立的数据库连接,避免频繁创建和销毁连接带来的性能开销。本篇文章将深入探讨连接池的概念、工作原理以及如何在实际...

    weblogic连接池配置数据库断掉重连的问题

    Weblogic 连接池配置数据库断掉重连的问题 在 Weblogic 中,连接池配置数据库断掉重连是一个非常重要的问题。连接池配置是 Weblogic 中的一种机制,用于管理与数据库的连接。然而,在实际应用中,我们经常会遇到...

    ConnectionPool数据库连接池例子.doc

    数据库连接池ConnectionPool的实现和配置 数据库连接池(Database Connection Pool)是一种提高数据库访问效率的技术,通过重用已经创建的数据库连接来减少创建新连接的开销。下面是一个使用Java语言实现的数据库...

    自己实现的ActiveMQ连接池和新版本ActiveMQ自带的连接池,封装好的工具类,可直接使用

    此外,自定义连接池还需要考虑线程安全、连接超时、最大连接数限制等关键问题。这样的工具类通常包含初始化连接池、获取连接、释放连接以及关闭连接池等方法。 其次,新版本ActiveMQ自带的连接池服务,也称为...

    C#高效数据库连接池源码

    `ConnectionPool`可能是项目或类库的命名空间或类,包含实际的数据库连接池实现;`Demo`可能是一个示例应用程序,展示如何使用自定义的数据库连接池。 5. **连接池实现细节**: - **初始化**:在应用程序启动时,...

    delphi数据库连接池

    Delphi数据库连接池是一种高效的数据库资源管理技术,它允许应用程序在多用户环境下共享数据库连接,以提高性能并减少系统资源的消耗。连接池的核心思想是重用已建立的数据库连接,而不是每次需要时都创建新的连接,...

    ConnectionPool 数据库连接池

    2. **监控与告警**:启用Druid等连接池的监控功能,对连接使用情况进行实时监控,及时发现并解决问题。 3. **事务管理**:正确使用事务,避免长时间占用连接。 4. **连接超时设置**:防止因长时间未使用的连接占用了...

    java 数据库 连接池驱动.rar

    - 获取和释放连接:通过数据源对象的getConnection()方法获取连接,使用完毕后调用Connection的close()方法,实际上将连接返回给连接池,而非真正关闭。 4. **连接池的优缺点** 优点: - 资源复用,提高性能。 ...

    RabbitMQ客户端连接池的原理及源码

    同时,结合功能测试和性能测试,我们可以验证连接池的效果,确保在提高性能的同时,不会引入新的问题。 总的来说,RabbitMQ客户端连接池的使用是提升系统效率的关键,理解和掌握其工作原理和源码,有助于我们更好地...

    Java jdbc数据库连接池总结

    数据库连接池(connection pool)的工作原理是为了解决资源的频繁分配、释放所造成的问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时...

    MySql数据库连接池C#代码(有注释含测试代码)

    本示例包含的代码文件`ConnectionPool.cs`、`TestConnectionPool.cs`和`PooledConnection.cs`提供了自定义数据库连接池的实现。 首先,我们来看`ConnectionPool.cs`。这个文件通常会包含一个类,比如`...

    Druid 1.1.20版本,修复MySQL数据库主备切换连接池无法恢复问题

    连接池Connection支持更多JDK 1.7的JDBC新增方法 连接池内置监控页面修复WaitThreadCount值输出不对的问题 连接池PGValidConnectionChecker增强对pgsql Driver 9.0及以下版本兼容 增强SQL防火墙 PageUtils....

    Unidac连接池

    3. **错误处理**:正确处理连接异常,防止因个别连接问题导致整个连接池失效。 4. **事务管理**:在使用连接池时,需注意事务的范围和隔离级别,避免长时间持有连接。 总的来说,Unidac连接池是提高数据库应用性能...

    数据库连接池java代码实现

    数据库连接池在Java中的实现是提高应用程序性能的关键技术之一,它通过复用已存在的数据库连接,避免了频繁创建和销毁连接导致的系统资源浪费。本文将深入探讨如何使用Java代码来实现一个简单的数据库连接池,并解释...

    delphi实现数据库连接池

    数据库连接池(Database Connection Pool)是预先在内存中创建一定数量的数据库连接,当应用程序需要时,可以从池中获取一个已存在的连接,而不是每次都去创建新的。这种方式减少了创建和关闭连接的开销,提高了系统...

Global site tag (gtag.js) - Google Analytics