web-dev-qa-db-ja.com

何が速いですか:JDBCまたはJNDI?

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

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

17
altern

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

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

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

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

21
Adrian Shum

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

30
stacker

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

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

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

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

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

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

3
Ruthreshwar

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

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

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

2
user41871

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

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

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

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

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

1
Tomer

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

1
Lion

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

1
user207421