一、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-tw/n/136104.html
微信掃一掃
支付寶掃一掃