JNDI和JDBC的区别

一、JNDI和JDBC简介

JNDI(Java Naming and Directory Interface)是用于在运行时查找和访问命名和目录服务的API,它允许在不了解底层实现的情况下,通过名称找到并访问Java对象。JDBC(Java Database Connectivity)是Java语言中用于执行SQL语句的API,它为程序员提供了一种连接数据库的标准方法。

二、JNDI和JDBC的区别

1. 实现方式不同

JNDI是通过命名和目录服务来寻找Java对象,而JDBC是通过驱动程序来实现对关系型数据库进行访问。

2. JNDI支持的协议和服务更多

JNDI可以支持许多不同的命名服务协议和目录服务协议,例如LDAP(Lightweight Directory Access Protocol)、DNS(Domain Name System)和NIS(Network Information System)等,而JDBC只能用于访问关系型数据库。

3. JNDI查找和缓存方式不同

JNDI将查找结果缓存在客户端,以提高效率,并且可以使用JNDI API来指定缓存存储位置以及缓存策略,而JDBC不会缓存查询结果。

4. JNDI应用场景更为广泛

由于JNDI可以用于查找和访问任何类型的Java对象,因此可以广泛应用于各种分布式应用程序和组件中。而JDBC则主要用于连接和操作关系型数据库。

三、JNDI和JDBC使用示例

1. JNDI示例

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import java.util.Hashtable;

public class JndiExample {
    public static void main(String[] args) throws NamingException {
        // 1. 创建InitialContext对象
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.naming.java.javaURLContextFactory");
        env.put(Context.PROVIDER_URL, "http://localhost:8080");
        Context jndiContext = new InitialContext(env);
        
        // 2. 通过JNDI查找对象
        MyService service = (MyService) jndiContext.lookup("java:comp/env/service/MyService");
        System.out.println(service.execute());
    }
}

2. JDBC示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class JdbcExample {
    public static void main(String[] args) throws SQLException {
        // 1. 加载数据库驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        
        // 2. 建立数据库连接
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
        
        // 3. 创建Statement对象执行SQL语句
        Statement statement = connection.createStatement();
        String sql = "select * from employees where salary > 5000";
        statement.execute(sql);
        
        // 4. 关闭连接
        statement.close();
        connection.close();
    }
}

原创文章,作者:TGLA,如若转载,请注明出处:https://www.506064.com/n/136104.html

(0)
TGLATGLA
上一篇 2024-10-04
下一篇 2024-10-04

相关推荐

  • PythonSVM代码详解

    一、介绍 支持向量机(Support Vector Machines,SVM)是一种非常优秀的分类算法,它在很多领域得到了广泛的应用。Python中的SVM算法实现引入了libsv…

    编程 2024-10-04
  • javabean是什么(Javabean有几种)

    本文目录一览: 1、什么是javabean?它和servlet是什么关系? 2、什么是javabean?有什么用? 3、JAVABean是什么? 4、什么是JavaBean? 什么…

    编程 2024-10-04
  • 上传下载图片代码jsp,上传图片的代码

    本文目录一览: 1、jsp中如何编写代码实现图片的上传下载 2、jsp上传图片,最好完整代码。100分! 3、JSP如何上传图片? 4、JSP如何上传图片 5、Jsp上传图片到指定…

    编程 2024-10-04
  • PythonContain——一个完整的Python容器解决方案

    一、PythonContain简介 PythonContain是一个完整的Python容器解决方案。它不仅仅是一个容器,还能够集成并支持多种Python应用程序。PythonCon…

    编程 2024-10-04
  • Python print用法总结

    Python是一种高级编程语言,因为其简单易学,被广泛应用于科学计算、数据分析和人工智能领域。在Python编程中,print函数是最基本、最常用的函数之一。由于其使用广泛,我们有…

    编程 2024-10-03
  • ISO-8859编码详解

    ISO-8859是一种字符编码,通常用于拉丁字母集和一些其他符号的表示,其基础字符集被用于显示西欧语言的文本,但并不能表达包含亚洲语言的文本。 一、ISO-8859的概述 ISO-…

    编程 2024-10-04
  • php得到当前时间,php得到当前时间的指令

    本文目录一览: 1、PHP怎么获取当前时间 2、php中如何获得当前时间? 3、PHP获取当前服务器时间 PHP怎么获取当前时间 //设置时区(中国标准时间) date_defau…

    编程 2024-10-03
  • 使用Navicat连接远程数据库

    Navicat是一个跨平台的数据库管理工具,可以与多种数据库进行连接,包括MySQL、PostgreSQL、Oracle和SQL Server等。使用Navicat连接远程数据库,…

    编程 2024-10-04
  • c语言入门首选,C语言怎么入门

    本文目录一览: 1、c语言入门自学书籍都有哪些? 2、新手自学C语言适合看什么书呢? 3、求C语言初学者书籍推荐 4、c语言入门书籍 5、c语言基础知识入门书籍有哪些? c语言入门…

    编程 2024-10-03
  • Python实现随机打乱列表的方法

    一、random库函数shuffle() Python中的random库提供了shuffle()函数,可以直接对列表进行随机打乱,这种方法是最简单易用的。 <python…

    编程 2024-10-04

发表回复

登录后才能评论