一、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/zh-hant/n/136104.html