JDBC、数据源、数据连接池的介绍和区别(三个是不同的东西,别再搞混了)
<svg xmlns="http://www.w3.org/2000/svg" style="display: none">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0)"></path>
</svg>
<h4><a id="1JDBC_0"></a>1、JDBC的介绍<button class="cnblogs-toc-button" title="显示目录导航" aria-expanded="false"></button></h4>
为了使 Java 编写的程序不依赖于具体的数据库,Java 提供了用于专门操作数据库的 API,即 JDBC(Java Data Base Connectivity)。JDBC 操作不同数据库仅仅是连接方式上的差异而已,使用 JDBC 的应用程序一旦和数据库建立连接,就可以使用 JDBC 提供的 API 操作数据库。 程序经常使用 JBDC 进行如下的操作:
- 与一个数据库建立连接
- 向已连接的数据库发送 SQL 语句
- 处理 SQL 语句返回的结果
JDBC 是连接数据库的最基本的方式, 首先加载 jdbc 驱动程序,然后建立数据库连接 Connection, 创建执行 SQL 的语句 Statenment, 处理执行结构 ResultSet, 最后释放资源。这种方式每次和数据库连接时,都需要实例一下连接数据的方法和类。
JDBC 操作数据库的具体代码在我的另一篇博客:
JDBC 操作数据库六部曲
2、数据源
数据源就是数据的来源,我们一般说的数据源就是数据库。
3、数据连接池
连接池是指这样一个“池子”,池子中的每个东西都是连接数据源的一个“连接”,这样别人想连接数据源的时候可以从这个“池子”里取,用完以后再放回来供以后其他想使用的人使用。
比较形象点的说,连接池就像数据源的代理人,如我们需要连接 (connection) 直接找他 (连接池) 要就可以了,不需要找数据源要, 不用的连接也是直接还给连接池。
也就是有了连接池,我们没必要直接找数据源打交道了,连接池在你的程序所在的机器内存,数据源不一定,并且数据源和连接池会保持一定数量的连接,这样我们访问数据库的时候就不需要找数据源要连接,直接在本地内存中取得连接,可以提高程序的性能。
三者的区别
JDBC 是 Java 提供给使用者用来连接数据库(数据源),并且操作数据库的工具,连接池里面存放着许多数据库的连接,如果没有连接池的话,我们 JDBC 每次操作数据库之前都要自己去和数据库进行连接,有了连接池之后,JDBC 在操作数据库之前,可以直接到连接池中拿到连接,用完之后,再把连接放回连接池即可。JDBC 创建连接时面向的对象由数据库变成了连接池。大大提高了连接数据库的效率。
举个浅显易懂的例子,每次操作完数据库之后必须关闭连接,现在有了连接池之后,就直接把连接返还给连接池就行了,不用关闭连接。这样效率是肯定会提高的。(个人的可能不准确的例子,清点喷)
连接池每次初始化时就会创建许多个与数据库的连接供程序使用。
不用连接池的时候:
用了连接池的时候:
因为一次性创建 100 个连接花的时间是比创建 100 次一个连接要少的,所以效率就会提高。程序结束之后,连接池中的连接也会全部关闭,不浪费空间。