1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > JNDI配置DataResource代替JDBC连接数据库

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

时间:2024-04-05 06:49:04

相关推荐

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.DataSourcemaxActive:表示一个数据库在此服务器上所能打开的最大连接数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();}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。