18

アプリケーションデータベース接続を構成するための2つのオプションがあります。1つはJDBCを使用し、もう1つはJNDIを使用します。これらの接続タイプがデータベースと連携する速度の観点から、最良のオプションは何でしょうか。

これらは、異なる原則を使用する2つの異なるタイプのデータベース接続であることを理解しています(JDBCは直接db接続であり、JNDIはアプリケーションサーバー側のデータベース接続プール構成です)。しかし、動作速度よりも重要な可能性のある他の一般的なJDBC / JNDIの長所と短所はありますか?はいの場合、それらは何ですか?

4

8 に答える 8

32

データベース接続は常にJDBCを使用します。JNDIを使用すると、名前で検索できるディレクトリサービスにデータソースを登録します。したがって、JDBCとJNDIは完全に異なり、互換性はありません。

于 2012-07-16T08:05:46.233 に答える
22

私はあなたが意味するものがから選択しているに違いない

  1. アプリケーションでデータソースまたはjdbc接続を手動で作成する、または
  2. コンテナにデータソースを設定し、アプリケーションがJNDIを介してデータソースを検索します

その場合は、可能であれば常に2に固執してください。

選択の主な理由は、パフォーマンスの違いではありません。2に固執する理由は、ほとんどの場合、分散トランザクションなど、コンテナからより高度な機能を取得するには2が必要であるためです。

于 2012-07-16T08:11:57.157 に答える
3

これは私がJNDIとJDBCについて見つけたものです。

JNDI:これは、サーバーとデータソースの名前をリモートで検索するために使用される電話帳のように機能するテクノロジです。

JNDIは接続プールを作成します。接続プールは、Type4接続のためにJNDIとデータベースがカプセル化されるサーバー上の環境です。

JDBC: JavaプログラムがSQLステートメントを実行できるようにするJavaAPI。これにより、JavaプログラムがSQL準拠のデータベースと対話できるようになります。

JDBCはODBCに似ていますが、Javaプログラム専用に設計されていますが、ODBCは言語に依存しません。

JDBCはSunMicrosystemsによって開発されました。JNDIはより高速で効率的です。

于 2012-11-05T10:05:34.417 に答える
2

真の速度の利点は、データベース接続を再利用できることです。

したがって、データベース接続プールを提供するアプローチを使用してから、適切なテクノロジーを使用してプールにアクセスする必要があります。実装に応じて、これはJDBC(ドライバーがそれ自体をサポートしている場合)またはJNDI、あるいはまったく異なるもののいずれかになります。

アプリケーションがWebコンテナー内で実行される場合、JNDIを使用して、アプリケーション内ではなくWebコンテナー内でプールを構成および管理できるようにするのが一般的です。

于 2012-07-16T08:08:35.723 に答える
2

質問について完全に明確ではありません。

JNDIは、一種のデータベース接続ではありません。JNDIを使用して、接続のファクトリであるデータソースを検索できます。ただし、データソースはJDBC APIの一部であるため、ここでの代替手段ではなく、JNDIはJDBCで動作します。

ディレクトリ情報のためにデータベースに対してJDBCを使用することと、LDAPリポジトリに対してJNDIを使用することについて話しているのですか?

于 2012-07-16T08:05:55.357 に答える
1

以前の回答で述べたように、データソースを使用することは、テクノロジーの観点からJDBCを使用することと同じです。

それでも、DB接続プールをサーバーで管理する方法であるため、通常はデータソースを使用することをお勧めします。

于 2012-07-16T08:09:34.910 に答える
1

接続プールを使用するかどうかは、アプリケーションコードに影響しません。アプリケーションは以前に登録されたデータソースのJNDI名でルックアップを実行するため、アプリケーションにコードを変更する必要はありません。データソースがJNDI登録中に接続プールの実装を指定する場合(「DataDirect接続プールマネージャーを使用したデータソースの作成」のセクションで説明)、クライアントアプリケーションは接続プールを介したより高速な接続の恩恵を受けます。

于 2012-07-16T08:10:27.857 に答える
1

質問は無意味です。何で速く?比較するものはありません。JDBCは、リレーショナルデータベースへの汎用インターフェースです。JNDIは、ネーミングシステムへの汎用インターフェースです。どちらかの効率は、通信対象のターゲットシステムに99%依存する可能性が高いです。いずれにせよ、リレーショナルデータベースとネーミングシステムは、ほとんど比較できないまったく異なるニーズを満たします。通常、JNDIを使用して接続を取得し、次にJDBCを使用してその接続を操作します。

于 2012-07-16T10:46:25.877 に答える