私は、クラスの読み込みはクラスを実行時にそのクラス名でロードするのに便利だと理解しています。'Class.forName( "MY_JDBC_DRIVER")'の目的は何ですか?
しかし、私たちのプロジェクトでJDBCを使用している間、私たちはどのドライバを使用するのか知っています。ドライバマネージャの文字列はほとんどハードコードされています。
私の質問は、なぜここにClass.forName("JDBC_DRIVER")
を使ってドライバをロードしていますか?
なぜクラスパスでドライバを追加できないのですか?どのドライバージャーが使用されるかを知っているからです。
Class.forName(JDBC_DRIVER)
は、DriverManager
にドライバを読み込みます。唯一の理由ですか?
編集1:
が(DriverManagerの)初期化の一部として、DriverManagerクラスは "jdbc.drivers" で参照されるドライバクラスをロードしようとすることシステムプロパティ。
アプリケーションは、
Class.forName()
を使用して明示的にJDBCドライバをロードする必要がなくなりました。Class.forName()
を使用して現在JDBCドライバをロードしている既存のプログラムは、修正を加えずに引き続き動作します。
次に、私はoracleドライバ以外を使用します。システムプロパティでドライバ名文字列を変更する必要はありますか?
グループ、ありがとうございます。 class.forName()は、静的メソッドの呼び出しやそのクラスのインスタンスの作成など、他のメカニズムと比較してクラスを読み込むのに便利であることを理解しました。このようにして、ロード中に静的ブロックを使用して一度しか機能を実行できないようにすることができます。 –