全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

JNDI和JDBC的区别

发布时间:2023-11-22 01:33:07
发布人:xqq

一、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();
    }
}

jndi和jdbc区别

相关文章

全面介绍Base16解码

全面介绍Base16解码

2023-11-22
SHA256加密用法介绍

SHA256加密用法介绍

2023-11-22
multiset用法详解

multiset用法详解

2023-11-22
unsafe-url详解

unsafe-url详解

2023-11-22

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取