Java 6 中不再需要Class.forName(JDBC_DRIVER)
本文討論了據稱消除註冊JDBC 驅動程式的需要從Java 6 開始使用Class.forName(JDBC_DRIVER)。這個假設源自於這樣的信念:DriverManager 依賴系統屬性「jdbc.drivers」來尋找適當的驅動程式。
但是,列印System.getProperty("jdbc.drivers") 的值回傳null,讓使用者困惑為什麼他們的應用程式繼續正常運作.
答案
儘管沒有「jdbc.drivers」系統屬性與此屬性無關。 Java 6 引入了服務提供者的概念,這使得 JVM 能夠在啟動時自動偵測已知介面的實作。
遵循此機制的 JDBC 驅動程式會由 DriverManager 自動註冊,因此無需 Class.forName() 。但是,這只適用於驅動程式支援服務提供者註冊的情況。
要啟動服務註冊,驅動程式必須在其 JAR 檔案的 META-INF 目錄中包含一個名為「services」的目錄。此目錄應包含一個名為「java.sql.Driver」的文字文件,該文件指定 JDBC 驅動程式的實作類別。
以上是自從 Java 6 以來,Class.forName(JDBC_DRIVER) 真的過時了嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!