文章目录
前言
我们在进行数据访问,声明模板和repository之前【JAVA】Spring对JDBC的支持,都需要配置数据源用来连接数据库。数据源又可以分为两大类:直连的数据源 和 连接池的数据源 ,其中连接池的数据源又有多种,接下来就让我们来学习一下这两种数据源。当然在学习之前,我们首先需要知道连接池、数据源、JNDI是什么,分别从当什么角色,有什么作用。
连接池、数据源、JNDI
连接池、数据源
Java中的数据源就是连接到数据库的一条路径,数据源中并无真正的数据,它仅仅记录的是你连接到哪个数据库,以及如何连接。DataSource
的创建可以有不同的实现。DataSource
通常被称为数据源,它包含连接池 和连接池管理 两部分,习惯上也经常把DataSource
称为连接池。
连接池思想
在系统初始化的时候,将数据库连接对象(Connection) 存储在内存中,当用户需要访问数据库时候,并不是建立一个新的连接,而是从连接池中取出一个已经建立好的空闲连接对象。而连接池负责分配、管理、释放数据库连接对象。注意的是:连接池是由容器(比如tomcat) 提供的,同时容器也管理着连接池。
JNDI
JNDI(Java Naming and Directory Interface,Java命名和目录接口),JNDI是Java平台的一个标准扩展,提供一组接口、类和关于命名空间的概念。其功能通俗的来说,就是提供一个类似全局的map,key保存JNDI的名称,value保存你要放到里面的资源的引用(如Java对象),以后要想要获取value的资源即可通过lookup
名称检索。
注意:需要区分开JNDI和通过JNDI查找的数据源的概念,不能将JNDI和连接池混为一谈。
- 这套API的主要作用在于:它可以将Java对象放在一个容器中(支持JNDI的容器例如Tomcat),并且为容器中的Java对象取一个名称,以后程序想要获得Java对象,只要通过名称检索即可。
- 其核心API为Context,它代表JNDI容器,其lookup方法为检索容器中对应名称的对象。
使用JNDI访问Tomcat内置连接池
- 将数据库驱动的包复制到Tomcat的安装目录
/lib/
中,这样Tomcat服务器才能找到数据库驱动 - 编写访问JNDI程序,运行在Tomcat内部,所以通常运行在servlet、jsp中
- 在Tomcat启动时,自动加载配置文件(
context.xml
),创建数据库连接池,该连接池由Tomcat管理。
直连的数据源
用户每次请求都需要向数据库获得连接,而数据库创建连接通常需要消耗相对较大的资源,创建的时间也较长。
连接池的数据源
连接池的思想
数据库连接是一种关键的有限的昂贵的资源,如果每次访问数据库的时候,都需要进行数据库连接&#x