ホームページ >データベース >mysql チュートリアル >一部の Java JDBC アプリケーションは、「Class.forName()」を使用した明示的なドライバー登録なしで動作するのはなぜですか?
Java での JDBC ドライバーの登録: Class.forName(JDBC_DRIVER) の必要性の明確化
Java バージョン 6 以降では、使用率が高いため、Class.forName(JDBC_DRIVER) メソッドを使用して JDBC ドライバーを登録する必要がなくなります。 「jdbc.drivers」システムプロパティの。ただし、一部の開発者は、「jdbc.drivers」の値を取得すると null が返されるというシナリオに遭遇しました。
この矛盾により、明示的に登録されたドライバーがないにもかかわらず、JDBC を使用する Java アプリケーションが正しく動作するのはなぜでしょうか?という疑問が生じます。
その答えは、Java 6 および JDBC 4 で導入された「サービス プロバイダー」として知られる機能にあります。このメカニズムにより、JVM は起動時に指定されたインターフェイスの実装を検出できるようになります。この概念に準拠した JDBC ドライバーは DriverManager によって自動的に登録され、事実上 Class.forName() の必要性が排除されます。
サービス登録プロセスは、ドライバーの JAR ファイル内の「services」ディレクトリの存在に依存します。 META-INF ディレクトリ内。このディレクトリには、実装されたインターフェイス (JDBC ドライバーの java.sql.Driver) と対応する実装クラスを指定するテキスト ファイルが含まれている必要があります。
サービス プロバイダーの概念に準拠することで、JDBC ドライバーを自動的に登録でき、明示的な Class.forName() 呼び出しが必要です。ただし、これはサービス プロバイダーのメカニズムと互換性のあるドライバーにのみ適用されます。
以上が一部の Java JDBC アプリケーションは、「Class.forName()」を使用した明示的なドライバー登録なしで動作するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。