97

Java JDBC仕様(vr。4)を読んでいて、次のステートメントに遭遇しました。

DataSource —このインターフェースは、JDBC2.0オプションパッケージAPIで導入されました。基になるデータソースに関する詳細をアプリケーションに対して透過的にすることができるため、DriverManagerよりも優先されます

私が理解しようとしているのは、aConnectionとaの違いDataSourceと、それが存在する理由です。つまり、上のブロックは、データソースに関する詳細がアプリケーションに対して透過的であることを示していますが、ユーザー名、パスワード、URLなどのデータベースプロパティをプロパティファイルで外部化してから、DriverManagerを使用しても同じように機能しませんか?

そして、DataSourceインターフェースは、プールなどできる接続を返す一般的な方法を持つためだけに作成されていますか?Java EEでは、アプリケーションサーバーはこのインターフェイスを実装し、アプリケーションは接続ではなくデータソースへの参照を持つようにデプロイされていますか?

4

5 に答える 5

76

スケーラビリティとメンテナンスの向上

DBに接続して接続を取得するには、すべての詳細DriverManager(ホスト、ポート、ユーザー名、パスワード、ドライバークラス)を知る必要があります。プロパティ ファイルでそれらを外部化しても、それらを知る必要があるという事実は何も変わりません。

を使用するDataSourceと、JNDI 名のみを知る必要があります。AppServer は詳細に注意を払い、クライアント アプリケーションのベンダーではなく、アプリケーションがホストされている管理者によって構成されます。

スケーラビリティ:

自分で接続を作成する必要があるとします。変化する負荷にどのように対処しますか?ユーザーが 10 人いる場合もあれば、1000 人いる場合もあります。接続が必要なときにいつでも接続を取得することはできず、後でそれを「解放」して、データベース サーバーが接続から抜け出すと、接続プーリングにつながります。DriverManager提供しませんDataSource

接続プールを自分でプログラムする場合は、 を使用する必要があります。DriverManagerそれ以外の場合は、 を使用してDataSourceください。

于 2013-03-04T10:04:32.097 に答える
41

DriverManager

  • 接続がJavaクラスで作成/閉じられるため、アプリケーションのパフォーマンスが低下します。
  • 接続プールをサポートしていません。

DataSource

  • 接続はクラス内で作成/閉じられず、アプリケーションサーバーによって管理され、実行時にフェッチできるため、アプリケーションのパフォーマンスが向上します。
  • 接続プールを作成する機能を提供します
  • エンタープライズアプリケーションに役立ちます
于 2013-03-04T09:43:58.410 に答える