1、JDBC的介绍
为了使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次一个连接要少的,所以效率就会提高。程序结束之后,连接池中的连接也会全部关闭,不浪费空间。