JDBC 驅動程式註冊:Class.forName() 棄用
該問題引發了使用Class.forName 註冊驅動程式的過時要求的擔憂(),如先前的Stack Overflow 討論中所建議的。它指出,從 Java 6 開始,DriverManager 使用系統屬性「jdbc.drivers」來檢索適當的驅動程序,從而消除了此步驟的需要。然而,發文者在列印屬性時遇到空值。
答案:
問題不在於「jdbc.drivers」屬性,而在於一個概念Java 6 和 JDBC4 中引入的稱為「服務提供者」。這裡,JVM 在啟動期間會自動偵測已知介面的實作。相容的 JDBC 驅動程式利用此機制,允許 DriverManager 輕鬆註冊它們。因此,只有當驅動程式支援此功能時,Class.forName() 才變得多餘。
服務註冊是由驅動程式 JAR 檔案的 META-INF 目錄中存在「services」目錄觸發的。該目錄必須包含一個文字文件,其中包含已實作介面的名稱(例如 JDBC 驅動程式的“java.sql.Driver”)並指定實作類別。
以上是JDBC 驅動程式註冊仍然需要 Class.forName() 嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!