你都说是数据库连接池了。那就是连接数据库用的。JDBC是java封装的对数据库的操作。当然你可以自己进一步封装。数据库连接池是JDBC使用的前提,如果连数据库连接池都没连上,JDBC的操作就谈不上了。而光有数据库连接池也没用啊,你连上了数据库不对其进行操作不是白连了么。所以就需要JDBC了。

一直没有搞清楚,JDBC的数据源与连接池是怎么一样的关系,直到今天做系统的时候,遇到了连接池如果管理有效的连接及资源的占用,释放的问题.
    数据源并不等于连接池,它不是必须要求实现连接池的,即连接池是数据源的一种.下面的一段网上摘要可以佐证:

一个基础DataSource实现,没有实现连接池,典型的,由JDBC驱动厂商提供。在基础DataSource实现中,下面的是真实的:

  • DataSource?.getConnection方法创建一个新的Connection对象,来代表一个物理连接并封装对该连接的所有安装和管理工作。
  • Connection.close方法关闭物理连接并释放相关资源。

在包括连接池的DataSource实现中,在幕后有一系列重大事件发生。在如上实现中,下面的是真实的:

  • DataSource?实现包括一个实现的指定连接池模块会管理一缓冲区的PooledConnection对象。DataSource对象典型的由应用服务器实现作为一层在驱动实现ConnectionPoolDataSource和PooledConnection接口的顶层。
  • DataSource?.getConnection 调用PooledConnection.getConnection方法来获得一个指定物理连接的逻辑句柄。只有当连接池中没有可用的连接时,才会出现建 立新物理连接的花费。当需要一个新的物理连接时,连接池管理器会调用ConnectionPoolDataSource的 getPooledConnection方法来创建一个。管理物理连接的工作由PooledConnection对象代理。
  • Connection.close方法关闭逻辑句柄,但物理连接还存在。连接池管理器被通知指定的PooledConnection对象现在可以重用了。如果应用程序试图重用逻辑句柄,Connection实现会抛出一个SQLException。
  • 单一一个物理PooledConnection对象会在生命期内产生许多逻辑Connection对象。对一个给定的PooledConnection对 象,只有最新生成的逻辑Connection对象才有效。当相关的PooledConnection.getConnection被调用时,任何先前存在 的Connection对象会被自动关闭。监听器(连接池管理器)不会被通知该事件。
  • 一个连接池管理器通过调用PooledConnection.close方法关闭物理连接。该方法典型的只有在特定环境下被调用:当应用服务器遇到正常的关闭,当连接缓冲区正在被重新初始化,或者当应用服务器收到一个事件指出连接出现一个无法恢复的错误时。
        在使用conection及statement后应该关闭,不然会由于垃圾收集器不能有效的释放资源而导致数据库的游标使用超过限制,而出现SQLException异常.所以在以后使用jdbc的时候不要把createStatement和prepareStatement都应该要放在循环外面,而且使用了这些Statment后,及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statment关闭。

关于jdbc和数据库连接池的关系(不是封装的关系)的更多相关文章

  1. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...

  2. Java -- JDBC 学习--数据库连接池

    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...

  3. JDBC【数据库连接池、DbUtils框架、分页】

    1.数据库连接池 什么是数据库连接池 简单来说:数据库连接池就是提供连接的... 为什么我们要使用数据库连接池 数据库的连接的建立和关闭是非常消耗资源的 频繁地打开.关闭连接造成系统性能低下 编写连接 ...

  4. Java Web(九) JDBC及数据库连接池及DBCP,c3p0,dbutils的使用

    DBCP.C3P0.DBUtils的jar包和配置文件(百度云盘):点我下载 JDBC JDBC(Java 数据库连接,Java Database Connectify)是标准的Java访问数据库的A ...

  5. 基于JDBC的数据库连接池技术研究与应用

    引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用.基于B/S(Browser/Server)架构的3层开 ...

  6. spring配置tomcat jdbc pool数据库连接池

    <bean id="sqliteDataSource" class="org.apache.tomcat.jdbc.pool.DataSource" de ...

  7. JavaEE JDBC 了解数据库连接池

    了解数据库连接池 @author ixenos 数据库连接是有限的资源,如果用户需要离开应用一段时间,那么他占用的连接就不应该保持开放状态: 另一方面,每次查询都获取连接并在随后关闭它的代价也很高. ...

  8. JDBC和数据库连接池

    JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成. ​ ● JDBC ​ ● C3P0 ​ ● DRUID 一.JDBC ...

  9. Jdbc druid数据库连接池

    //测试类package druid; import util.JdbcUtilsDruid; import java.sql.Connection; import java.sql.Date; im ...

随机推荐

  1. Linux-day-1

    1. ls    作用:列出文件信息,默认为当前目录下 常用选项:         -a: 列出所有的文件,包括所有以.开头的隐藏文件         -d: 列出目录本身,并不包含目录中的文件    ...

  2. Codeforces 959 树构造 暴力求最小字典序互质序列

    A B C 题目给你一个结论 最少需要min((odd,even)个结点可以把一棵树的全部边连起来 要求你输出两颗树 一棵树结论是正确的 另外一棵结论是正确的 正确结论的树很好造 主要是错误的树 题目 ...

  3. dd命令注意:dd:unrecognized operand 'if'

    如果是 idd if=boot.bin 在等号两边不要有空格

  4. 关于Vuex的actions传入多个参数的方法:

    1.在state中:             state={    obj:{         name:'state中的数据'     } }         2.在actions定义的方法中:   ...

  5. APP功能测试注意点

    App功能测试的7大注意点 : APP测试   在日常工作的摸索中,我们将如何做好app测试的注意点简单归结为如下内容.  弱网测试,兼容性测试,UI测试.中断测试, 01 运行 1)App安装完成后 ...

  6. Floyd求解最短路

    Floyd算法适用于求解全源最短路.也就是能够求解任意两点间的最短路径并且是适用于含有负权边的图,但是含有负环则不行了!空间复杂度为O(n2).时间复杂度为O(n3).其具体的原理在百度能够找到很多, ...

  7. 【bzoj3038】上帝造题的七分钟2

    *题目描述: XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. “第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平 ...

  8. CG-CTF | MD5

    渣渣今天写了一题misc,第一次学习md5的python写法,赶紧记录一波 背景知识: import hashlib md51=hashlib.md5() md52=hashlib.md5() # [ ...

  9. 【转】结构化日志类库 ---- Serilog库

    源地址:https://www.cnblogs.com/mq0036/p/8479956.html 解决异常: Invalid cast from 'System.String' to 'Serilo ...

  10. SpringMVC常用方法总结

    *) @RequestMapping(value="/xxx/{id}",method={RequestMethod.GET}) method 不写的话,默认GET.POST都支持 ...