一、JNDI概述
JNDI(Java Naming and Directory Interface),Java命名与目录接口,是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
JNDI可以把Java应用程序访问数据库管理和配置交给存放Java应用的服务器,比如tomcat服务器。在没有JNDI之前,JDBC连接数据库,Java应用程序与MySQL提供的驱动程序关联,映射一个Driver的Class对象(com.mysql.jdbc.Driver),然后用Java提供的DriverMannager管理类调用getConnection(“jdbc:mysql://localhost:8080/数据库名字”, “用户名”, “密码”)方法获得一个Connection连接对象,让Java与指定数据库建立连接。缺点很明显:当所有程序调试完成后,所有Java源文件形成Jar包,如果数据库类型或用户名改变,就必须改源代码。有JNDI之后,把变化的地方交给服务器来设置一个数据源,需要JDBC建立连接时引用,交给服务器管理配置,Java应用程序需要就到数据库连接池里去拿一个。
二、数据库连接池技术
数据库连接池技术是一种提升应用程序性能的技术,核心作用是管理是连接到数据库的多个连接的打开和释放,即形成连接池管理。应用程序需要连接时使用它,使用完毕后又将其放回连接池中。当应用程序需要连接时,就绪连接一直保持可用状态。池管管理数据库连接的生命周期,这样开发人员实际上不需要等待连接建立,或者手动关闭连接。连接池机制节省昂贵的操作及资源消耗,方便了应用程序运行时建立网络连接,并最终在后端初始化数据库会话。
三、案例演示:创建数据库连接池,获取数据源
首先你得有一个数据库
1、创建数据库与表
(1)用户表user结构
(2)栏目表topic结构
(3)新闻表news结构
(4)评论表comment结构
2、创建Web项目DataSourceDemo
3、在WEB-INF目录里创建lib目录,添加MySQL数据库驱动程序jar包
4、在web目录里创建META-INF子目录,在里面创建数据源配置文件context.xml
在web.xml文件里配置数据源引用,但是经过验证,不配置也可以访问数据源。
在这里我是配置了的,大家可以看看
5、在src里创建net.azc.dbutil包,在里面创建数据库连接管理类,ConnectionManager
package net.azc.dbutil;
import javax.naming.Context;
import