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 が自動的に検出してロードするため、明示的な登録は必要ありません。
以上が「Class.forName(JDBC_DRIVER)」はモダン Java では廃止されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。