Class.forName(JDBC_DRIVER) - 它是否過時?
儘管聲稱 Java 6 不建議使用 Class.forName(JDBC_DRIVER) ,據觀察,某些應用程式在沒有明確註冊 JDBC 驅動程式的情況下仍然可以正常運行。這種行為引發了人們對該方法必要性的質疑。
深入探討爭議
當 System.getProperty("jdbc.drivers") 傳回 null 時,表示系統屬性方法在驅動程式註冊中不起作用。相反,難題在於 Java 6 和 JDBC4 中引入了「服務提供者」概念。
服務提供者機制
在這個機制中,已知介面的實作可以在啟動期間被 JVM 偵測到。符合此概念的驅動程式由 DriverManager 自動註冊,因此無需使用 Class.forName()。但是,這僅適用於支援此機制的驅動程式。
服務目錄的角色
當驅動程式的 JAR 檔案中存在服務目錄時,將啟動服務註冊,位於 META-INF 目錄內。在此目錄中,必須存在一個文字文件,其中包含已實作介面的名稱(用於 JDBC 驅動程式的 java.sql.Driver)和實作類別。
結論
如果 JDBC 驅動程式不支援服務提供者機制,則可能仍需要 Class.forName(JDBC_DRIVER) 方法。但是,對於這樣做的驅動程序,不再需要明確註冊,因為 DriverManager 會自動偵測並載入它們。
以上是現代 Java 中的「Class.forName(JDBC_DRIVER)」是否已過時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!