sql >> データベース >  >> RDS >> Mysql

WebアプリでJDBCを介してデータベースに接続するときにClass.forNameが必要になるのはいつですか。

    JDBC4ドライバーにはファイルが含まれています:

    META-INF/services/java.sql.Driver

    ServiceProviderメカニズムを使用してドライバー実装をJVMに登録するjar内( java.util.ServiceLoader )。そのため、Class.forName もはや必要ありません。

    私の推測では、これはクラスローダーの問題です。 ServiceLoader javadocは次のように述べています:

    ドライバーをtomcat\libに入れてみます Webアプリディレクトリではなくディレクトリを使用して、違いが生じるかどうかを確認します(クラスローダーが異なりますか?)。

    IDEを介してWebアプリを起動し、ブレークポイントを設定した場合、ブレークポイントに到達すると、「式の評価」機能を使用して次のコマンドを実行できます。ServiceLoader.load(Driver.class) 。これにより、ServiceLoaderが提供されます どのドライバーが登録されているかを確認できるクラス。 mysqlドライバーがそこにあるかどうか、リストのどこにあるかなどを確認できます。これは、ここでの動作を理解するのに役立つ可能性があります。




    1. アップロードされたファイル(サウンド、写真、ビデオ)を保存する場所

    2. フラスコをインストールできません-sqlalchemymysql-python

    3. php mysql文字セット:国際コンテンツのhtmlの保存

    4. MySqlテーブルをフィールド名(別名ヘッダーまたは列名)を含むテキストファイルにエクスポート/ダンプする方法