雙向互通:Java 可呼叫 SQL/PLSQL,SQL/PLSQL 亦可呼叫 Java。Java 命名空間直接映射到資料庫 Schema。
| 驅動 | 適用場景 | 通訊方式 | 需安裝 Client |
|---|---|---|---|
| JDBC OCI | 傳統客戶端應用 | Oracle Call Interface + Net8 | 是 |
| JDBC Thin | Web Applet、無 Client 環境 | Java Sockets 直連 | 否 |
| JDBC KPRB | 資料庫內部 Java 預存程序/觸發器 | 預設資料庫 Session | 否(已在 DB 內) |
三者語法、API、Oracle 擴展完全一致,OCI 效率略高於 Thin。
// Thin
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@host:1521:SID", "user", "pwd");
// OCI
Connection conn = DriverManager.getConnection(
"jdbc:oracle:oci8:@NetServiceName", "user", "pwd");
// KPRB
Connection conn = new oracle.jdbc.driver.OracleDriver().defaultConnection();
// Thin 範例
import java.sql.*;
class DbAccess {
public static void main(String[] args) throws SQLException {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@dbhost:1521:ORA1", "scott", "tiger");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select BANNER from SYS.V_$VERSION");
while (rs.next()) System.out.println(rs.getString(1));
stmt.close();
}
}
OCI 與 KPRB 範例同理,僅連線字串與驅動註冊方式不同。
掌握三種驅動差異與配置細節,能靈活應對從開發到生產的各種部署場景。
出處:bianceng.cn