ホームページ >データベース >mysql チュートリアル >Java 6 以降での JDBC ドライバーの登録には Class.forName() が必要ですか?

Java 6 以降での JDBC ドライバーの登録には Class.forName() が必要ですか?

DDD
DDDオリジナル
2025-01-04 12:56:40615ブラウズ

Is Class.forName() Necessary for JDBC Driver Registration in Java 6 and Later?

DriverManager ドライバーの登録: Class.forName() Java 6 以降での使用法

質問:

Java 6 以降、Class.forName(JDBC_DRIVER) はいいえですJDBC ドライバーの登録はもう必要ありませんか? jdbc.drivers システム プロパティでドライバー パスを提供する必要があることがドキュメントで示唆されているにもかかわらず、このプロパティを印刷すると null が返されます。アプリケーションが依然として正しく機能するのはなぜですか?

答え:

Java 6 (および JDBC4) での Class.forName() の削除は、jdbc.drivers とは無関係です。財産。 Java では、準拠ドライバーが起動時に JVM に自己登録できる「サービス プロバイダー」の概念が導入されました。

サービス プロバイダーの登録:

この標準の場所に準拠するドライバーMETA-INF ディレクトリ内の JAR ファイル内の services ディレクトリ。このディレクトリには、実装クラスを指定する java.sql.Driver という名前のテキスト ファイルが含まれています。

ドライバ検出:

JVM は、このインターフェイスを実装するドライバを自動的に検出して登録します。 。これにより、準拠ドライバーの Class.forName() を使用した明示的な登録の必要がなくなります。

アプリの機能:

提供された例では、アプリケーションは、 System.getProperty("jdbc.drivers") の null 戻り値 if:

  • 使用されているドライバーはサポートしていますサービス プロバイダーの登録。
  • ドライバーの JAR ファイルには、必要なサービス ディレクトリが含まれています。

以上がJava 6 以降での JDBC ドライバーの登録には Class.forName() が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:サブクエリ次の記事:サブクエリ