JNDI和JDBC的区别及使用

JDBC(Java Database Connectivity)是由数据库中间服务商提供的,用于连接数据库的Java API。一组类和接口(对接数据库)。

JNDI(Java Name Directory Interface)是为应用服务器(Tomcat)管理资源所设置的目录样式的唯一标识。(数据库、网页、文档等)



JDBC配置使用:

  •  // 第一步: 首先注册驱动, 驱动一般只会注册一次
    try {
           Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
        }
    // 第二步:建立连接 Connect, 设置url ,用户名, 密码
       // url格式:JDBC:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…
       // 注意的是url中一定不要加多余的空格,否则会出错, useSSL=false是为了解决身份验证时出现的警告的问题
       // String url = "jdbc:mysql://localhost:3306/test?" + "user=root&password=wsw011152&useUnicode=true&characterEncoding=UTF-8&useSSL=false";
          String url = "jdbc:mysql://localhost:3306/test?useSSL=false";
          String name = "root";
          String psw = "******";
          Connection connect = null;
    try {
        connect = DriverManager.getConnection(url, name, psw);
        // connect = DriverManager.getConnection(url);
        } catch (SQLException e) {
                // TODO Auto-generated catch block
          e.printStackTrace();
        }
      // 第三步: 创建一个 Statement ,一般建议使用 PreparedStatement
            // 1、执行静态SQL语句。通常通过Statement实例实现。
            // 2、执行动态SQL语句。通常通过PreparedStatement实例实现。
            // 3、执行数据库存储过程。通常通过CallableStatement实例实现。
            // String sql = "select * from user where id = ?";
            String sql = "select * from user where id = ?";
    try {
         PreparedStatement ps = connect.prepareStatement(sql);
         ps.setInt(1, 1); // 设置参数
      // 第四步: 执行语句,获得一个结果集,处理获得的结果
         ResultSet result = ps.executeQuery();
          while (result.next()){            System.out.println(result.getInt("id"));
                    System.out.println(result.getString("name"));
                    System.out.println(result.getInt("age"));
                    System.out.println(result.getString("salary"));
          }
      // 第五步: 关闭资源
         result.close();
         ps.close();
         connect.close();
        } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }
      }

JNDI配置使用:

  • 添加jar包
  • 在Tomcat/conf/context.xml中配置
  •  <Resource
            name="jdbc/test"
            auth="Container"
            type="javax.sql.DataSource"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            username="root"
            password="*****"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/test"
     />
  • 在项目web.xml文件中添加配置
  • <resource-ref>
          <description>DB Connection</description>
          <res-ref-name>jdbc/test</res-ref-name>
          <res-type>javax.sql.DataSource</res-type>
          <res-auth>Container</res-auth>
      </resource-ref>
  • 在代码中连接、使用
  • DataSource ds = null;
    try {
      Context initContext = new InitialContext();
      DataSource ds = (DataSource)initContext.lookup("java:comp/env/jdbc/test");
      out.print(ds);
      } catch (Exception e) {
          e.printStackTrace();
      }
    connect = ds.getConnection();
    ....

总结:

JNDI通过在Tomcat服务器的配置文件和项目的web.xml上配置参数,可以灵活、快速地获取数据库配置信息并连接。对比JDBC,当数据库参数、路径等改变时也不需要改变代码,比较灵活简单。

原文地址:https://www.cnblogs.com/boluofan/p/10850980.html

时间: 2024-10-24 05:09:58

JNDI和JDBC的区别及使用的相关文章

JDBC、JNDI和DBCP的区别

JDBC:Java DataBase Connectivity,java连接数据库和执行SQL语句的API. 数据源:Data Source.就是将IP.数据库.用户名.密码封装起来对外只提供一个JNDI名称,在应用中只要调用这个JNDI就能连接数据库,而不需要在代码中写入用户名密码等信息.这样做的好处是,当用户名密码乃至数据库变化时只需要去修改JNDI的xml文件而不需要去修改代码. JNDI:Java Naming and Directory Interface,Java命名和目录接口.JN

JDBC ODBC区别

一.JDBC(Java DataBase Connectivity standard) 1.JDBC,它是一个面向对象的应用程序接口(API), 通过它可访问各类关系数据库. 2. 驱动程序(JDBC driver) 要通过JDBC来存取某一特定的数据库,必须有相应的JDBC driver,它往往是由生产数据库的厂家提供,是连接JDBC API与具体数据库之间的桥梁. 3.DBMS 4.三者之间的联系 JDBC API调用驱动程序来访问DBMS 二.ODBC(Open Database Conn

org.gjt.mm.mysql.Driver与com.mysql.jdbc.Driver区别

org.gjt.mm.mysql.Driver 是早期的驱动名称,后来就改名为com.mysql.jdbc.Driver,现在一般都推荐使用com.mysql.jdbc.Driver.在最新版 本的mysql jdbc驱动中,为了保持对老版本的兼容,仍然保留了org.gjt.mm.mysql.Driver,但是实际上 org.gjt.mm.mysql.Driver中调用了com.mysql.jdbc.Driver,因此现在这两个驱动没有什么区别. 又如其它说法: org.gjt.mm.mysql

jndi 与 jdbc

现在开发中经常用到数据库的两种配置1 jdbc2  jndi 一般开发环境都会使用jdbc环境,自己弄配置方便.但是测试和生产环境一般都使用jndi方式.原因有:1   使用jndi方式配置,数据库的地址,用户名密码都放在jboss的配置文件中.比较安全.2   多个应用可以共享数据源

一、Mybatis与JDBC的区别

1.什么是MyBatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO). MyB

hibernate和jdbc的区别 优缺点

JDBC与Hibernate在性能上相比,JDBC灵活性有优势.而Hibernate在易学性,易用性上有些优势.当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势. 相同点: ◆两者都是JAVA的数据库操作中间件. ◆两者对于数据库进行直接操作的对象都不是线程安全的,都需要及时关闭. ◆两者都可以对数据库的更新操作进行显式的事务处理. 不同点: ◆使用的SQL语言不同:JDBC使用的是基于关系型数据库的标准SQL语言,Hibernate使用的是HQL(Hibernate query l

JPA 与 JDBC 的区别和基本用法

JPA 概念 JPA(Java Persistence API)用于对象持久化的 API,是 Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层. 与 JDBC 的对比 JDBC 也是一种规范和接口,不过 JDBC 是面向 SQL 的,使用起来比较繁琐.所以就有了 ORM 框架,建立了 Java 对象与数据库表之间的映射关系,可以通过直接操作对象来实现持久化,简化了操作的繁杂度.而 JPA 就是 ORM 框架的规范,值得一提的是 Hibernate 是符合 JP

JDBC常见面试题集锦

什么是JDBC,在什么时候会用到它? JDBC的全称是Java DataBase Connection,也就是Java数据库连接,我们可以用它来操作关系型数据库.JDBC接口及相关类在java.sql包和javax.sql包里.我们可以用它来连接数据库,执行SQL查询,存储过程,并处理返回的结果. JDBC接口让Java程序和JDBC驱动实现了松耦合,使得切换不同的数据库变得更加简单. 有哪些不同类型的JDBC驱动? 有四类JDBC驱动.和数据库进行交互的Java程序分成两个部分,一部分是JDB

帆软报表FineReport中数据连接之Websphere配置JNDI连接

以oracle9i数据源制作的模板jndi.cpt为例来说明如何在FineReport中的Websphere配置JNDI连接.由于常用服务器的JNDI驱动过大,帆软报表FineReport中没有自带,所以可以采取下面的方法来使用服务器中的JNDI连接.原理:先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成JNDI连接,然后配置好服务器中的JNDI连接,然后按照我们下面章节所说的部署好服务器,这样就可以通过W