認證與授權協定
Posted on Mar 31, 2025
JDBC (Java Database Connectivity)
- 核心組件:
- 驅動管理器(DriverManager):管理數據庫驅動程序
- 連接對象(Connection):表示與數據庫的連接
- 語句對象(Statement):執行 SQL 查詢
- 結果集(ResultSet):查詢結果的表示
- JDBC 驅動類型:
- Type 1:JDBC-ODBC 橋接驅動
- Type 2:原生 API 部分 Java 驅動
- Type 3:純 Java 網路協議驅動
- Type 4:純 Java 直接連接驅動(推薦)
- 連接流程:
- 註冊 JDBC 驅動程序(JDBC 4.0+ 自動註冊)
- 建立數據庫 URL
- 創建連接對象
- 創建語句對象
- 執行查詢
- 處理結果集
- 關閉連接
- 語句類型:
- Statement:基本 SQL 執行
- PreparedStatement:預編譯 SQL,防止 SQL 注入
- CallableStatement:執行存儲過程
- 交易管理:
- 自動提交模式:每條 SQL 自動提交
- 手動事務控制:begin/commit/rollback
- 儲存點(Savepoint):部分回滾機制
- 隔離級別:READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE
- 進階功能:
- 批處理操作:高效執行多條 SQL 語句
- 數據類型映射:JDBC 類型與 Java 類型對應
- 連接池:管理和重用數據庫連接(HikariCP、C3P0)
- 元數據:DatabaseMetaData、ResultSetMetaData
- 最佳實踐:
- 預處理語句防止 SQL 注入
- 正確關閉資源防止泄漏(try-with-resources)
- 有效管理大結果集(分頁查詢)
- 使用連接池提高效能
RMI (Remote Method Invocation)
- 基本概念:Java 特有的遠程過程調用機制
- 核心組件:
- 遠程接口(Remote Interface):定義可被遠程調用的方法
- 遠程對象(Remote Object):實現遠程接口的對象
- 註冊表(Registry):存儲和查找遠程對象引用的目錄
- 骨架和存根(Skeleton & Stub):處理底層網絡通信
- RMI 架構層次:
- 應用層:客戶端和服務端應用
- 代理層(Proxy Layer):存根和骨架
- 遠程引用層(Remote Reference Layer):管理遠程對象引用
- 傳輸層(Transport Layer):處理網絡通信
- RMI 註冊表:
- 預設端口:1099
- 命名服務:存儲和查找遠程對象引用
- 安全限制:通常只允許本地註冊
- 參數傳遞機制:
- 按值傳遞:序列化對象副本
- 按引用傳遞:遠程對象引用
- 序列化要求:參數必須實作 Serializable
- 進階特性:
- 動態類加載:自動下載未知類(Codebase)
- 安全管理器:控制代碼訪問權限
- 分佈式垃圾回收:自動清理無引用的遠程對象
- 自定義 Socket 工廠:SSL、壓縮等
- 與其他 RPC 機制比較:
- 平台限制:只支持 Java 平台
- 物件導向:支持完整的對象序列化
- 內建功能:分佈式垃圾回收、動態類加載
- 效能考量:比二進制協議慢,但開發簡單