jnid中mysql的驱动类_JNDI和JDBC的区别和联系及其使用方法

一.JNDI 和JDBC的区别和联系

两者都是API,是连接数据库的标准。并不是什么产品或方法。

二.JDBC

全称:Java Database Connectivity

以一种统一的方式来对各种各样的数据库进行存取

使用JDBC带来的问题:

(1).数据库服务器名称 、用户名和口令都可能需要改变,由此引发JDBC URL需要修改

(2).数据库可能改用别的产品,如改用DB2或者Oracle,引发JDBC驱动程序包和类名需要修改

(3).随着实际使用终端的增加,原配置的连接池参数可能需要调整

使用方法:

(1)加载数据库驱动,填写数据库url,用户名,密码

3775d85945ba63902deae09742ae2e3f.png

(2)在程序中进行调用

94fae0f93ce48c276ed2ae8eaea6fd79.png

三.JNDI

Java

Naming and Directory Interface

它提供了一致的模型来存取和操作企业级的资源如DNS和LDAP

JNDI相对与JDBC来说是他的灵活性,程序员不需要关心“具体的数据库后台是什么?JDBC驱动程序是什么?JDBC URL格式是什么?访问数据库的用户名和口令是什么?”等等这些问题,程序员编写的程序应该没有对 JDBC 驱动程序的引用,没有服务器名称,没有用户名称或口令 —— 甚至没有数据库池或连接管理。而是把这些问题交给J2EE容器来配置和管理,程序员只需要对这些配置和管理进行引用即可。

使用方法:

tomcat下jndi的两种配置方式

(一).非全局的JNDI配置:只针对某一个Web项目的数据源的配置

1.导入要链接数据库的jar包文件

例如:

sqlserver导入:sqljdbc4.jar包

oracle导入:ojdbc14.jar包

mySQL导入:mysql-connector-java-5.0.8.jar包

2.在JNDI中配置数据库的连接池

在WEB项目中的META-INF中创建一个context.xml文件。用于设置数据库的连接池信息

例如(mysql):

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

21

23 auth="Container"

24 type="javax.sql.DataSource"

25 maxActive="100"

26 maxIdle="30"

27 maxWait="10000"

28 username="root"

29 password="whr110112119"

30 driverClassName="com.mysql.jdbc.Driver"

31 url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8"/>

32

3.在web.xml文件中进行配置(可配置也可以不配置)

如果要配置的话:

1. 2.my DB Connection3.jdbc/sqlserver这个名字要与context.xml中的name一样4.javax.sql.DataSource5.Container6.

其中res-ref-name值要和context.xml的name值一致

4.如果使用Spring的情况下

在applicationContext.xml或者自己的Spring的配置文件中导入JNDI的配置信息

1 //获得content.xml中JNDI配置的数据库的连接池信息。jndi-name必须与JNDI中的name值一样2

3 //使用JdbcTemplate操作数据库。4

5

6

在java文件中使用IOC得到jdbcTemplate对象。最后使用jdbcTemplate操作数据库

jndi测试方法:

1. public void testJNDI() throws NamingException, SQLException{

2. Context ctx = new InitialContext();

3. DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql ");

4. Connection conn = ds.getConnection();

5. System.out.println(conn.isClosed());

6. }

在jsp中调用加载jndi方式(不可以直接用main方法测试,必须通过启动容器从jsp中调用):

写测试的jsp,例如:jndiTest.jsp

1. 2.3.

4.// 调用JNDITest类的testJNDI方法进行测试

5. JNDITest test= newJNDITest();

6. test.testJNDI();

7. out.println("connection pool connected !!");

8. %>9.10.11.

12.jndi配置测试13.14.15.16.

5.如果不使用Spring的话,可以在java文件中直接使用:

1   //JNDI方式2   Context ctx = new InitialContext();3   //获取数据源4   DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");5   //通过数据源取连接池中的连接6   conn = ds.getConnection();

(二)全局的JNDI配置

1.在tomcat的安装目录下的conf下的server.xml文件中的GlobalNamingResources标签下加入resource配置信息(局部JNDI在context.xml文件中的resource配置信息)

2.在Web项目中的META-INF下的context中配置

1 //global中的名字要与server.xml中的名称一样,而这里的name表示当前要使用名称2

3.剩下的和配置局部JNDI一样,及第3,第4,第5配置完直接使用就可以了

总结:

如果要配置局部的话,推荐使用第一种方式,这样不依赖tomcat了

但是还是推荐使用第二种方式好,虽然依赖tomat,但是是全局的,而且可以配置多个,对于以后切换使用方便

在项目的web.xml中添加的资源引用可有可无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值