JNDI配置DataResource代替JDBC连接数据库

JNDI配置DataResource代替JDBC连接数据库

1.JDBC和JNDI

​ JDBC就是我们连接数据库的一个标准的Java API,JDBC提供了一系列接口和规范,各个数据库公司根据其JDBC接口和规范,开发出各自的连接和操作数据库的.jar包。通过这些一系列的jar包和JDBC定义的一组类和接口,Java应用程序开发人员使用它来访问数据库和执行SQL语句。

​ JNDI(Java Name Directory Interface,Java命名和目录接口),它不仅仅是进行数据库定位的,它是给当前应用服务器所管理的所有资源一个唯一的标识,包括数据库,网页,文件,连接池等等。JNDI是一种标识,通过标识来 获取对应的资源。(或许很难懂,看下面的操作就明白了)

2.JNDI配置DataResource

在tomcat的conf/context.xml中配置

<!--
name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
 auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
type:此名称所代表的类型,现在为javax.sql.DataSource
 maxActive:表示一个数据库在此服务器上所能打开的最大连接数
maxIdle:表示一个数据库在此服务器上维持的最小连接数
 maxWait:最大等待时间(毫秒)。当连接等待maxWait没被使用,将销毁连接释放资源。
 username:数据库连接的用户名
 password:数据库连接的密码
 driverClassName:数据库连接的驱动程序
 url:数据库连接的地址
-->
<Resource 
       name="DBConn" 
       auth="Container" 
       type="javax.sql.DataSource"
       maxActive="100" 
       maxIdle="30" 
       maxWait="10000"
       username="root" 
       password="yourpwd" 
       driverClassName="com.mysql.jdbc.Driver"
       url="jdbc:mysql://localhost:3306/test"
/>

在项目web.xml文件中添加配置

<resource-ref>
    <description>DB Connection</description>
    <!--其内容对应上面前三个参数一一对应,目的是标识数据源-->
    <res-ref-name>DBConn</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

3.用DataSource中的连接来连接数据库

​ 与传统的JDBC不同,这里是直接通过数据源来获取连接数据库的连接,可以把数据源简单理解成连接池,我们在连接池中获取连接。

​ 如果使用JDBC来连接数据库,将会涉及频繁的数据库连接的创建和销毁,而数据库连接的创建是很耗时和吃性能的。所以我们利用JNDI来配置好数据源,在数据源里面已经有已经创建好的连接,我们使用是只需要在连接池里面拿连接就可以了,用完以后将连接放回到连接池之中。无需在用JDBC来创建连接和销毁。

​ 数据源的存在提高了数据库连接的复用,提高了性能,而且在更数据库连接时只有该配置就可以了。

DataSource ds = null;
Connection connect = null;
try {
    //获取Context.xml中的配置
	Context initContext = new InitialContext();
    //获取配置中的数据源(连接池)
	DataSource ds = (DataSource)initContext.lookup("java:comp/env/DBConn");
    //数据源中获取连接(在连接池里面拿一个连接出来)
    connect = ds.getConnection();
    //后面都是跟JDBC一样的数据库操作
    //········
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		//5、关闭数据连接,关闭的时候其实是将连接放回到连接池之中
    	Connection.close();
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值