一、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