首頁 >資料庫 >mysql教程 >JDBC 驅動程式註冊仍然需要 Class.forName() 嗎?

JDBC 驅動程式註冊仍然需要 Class.forName() 嗎?

Patricia Arquette
Patricia Arquette原創
2025-01-05 04:09:39403瀏覽

Is Class.forName() for JDBC Driver Registration Still Necessary?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn