ホームページ >データベース >mysql チュートリアル >JDBC ドライバー登録のための Class.forName() はまだ必要ですか?

JDBC ドライバー登録のための Class.forName() はまだ必要ですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-05 04:09:39434ブラウズ

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

JDBC ドライバーの登録: Class.forName() の廃止

この質問は、Class.forName を使用して JDBC ドライバーを登録するという古い要件に関する懸念を引き起こします。 () は、以前のスタック オーバーフローの議論で示唆されたとおりです。 Java 6 以降、DriverManager はシステム プロパティ「jdbc.drivers」を使用して適切なドライバーを取得するため、この手順が不要になると記載されています。ただし、投稿者はプロパティを印刷するときに null 値に遭遇します。

回答:

問題は、「jdbc.drivers」プロパティにあるのではなく、むしろ概念にあります。 Java 6 および JDBC4 で導入され、「サービスプロバイダー」として知られています。ここで、既知のインターフェイスの実装は、起動時に JVM によって自動的に検出されます。準拠した JDBC ドライバーはこのメカニズムを活用し、DriverManager がそれらを簡単に登録できるようにします。したがって、Class.forName() は、ドライバーがこの機能をサポートする場合にのみ冗長になります。

サービスの登録は、ドライバーの JAR ファイルの META-INF ディレクトリ内に「services」ディレクトリが存在することによってトリガーされます。このディレクトリには、実装されたインターフェイスの名前 (JDBC ドライバーの場合は「java.sql.Driver」など) を持ち、実装クラスを指定するテキスト ファイルを格納する必要があります。

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

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