2

ドキュメントのJDBCには、データベースに接続するための4つの実装があると記載されています。4つの実装が何を意味するのかよくわかりません。JDBCは本当にデータベースに依存しないのではないかと思っていました。つまり、MYSQL(jConnector)のように、データベースのタイプごとに「ドライバー」が必要ですか?

Oracle、MySQL、MSSQLをサポートするアプリを書いています。

参照: http ://docs.oracle.com/javase/tutorial/jdbc/basics/gettingstarted.html

ありがとう

4

5 に答える 5

5

残念ながら、すべてのデータベースタイプのドライバーが必要になります。

真にデータベースに依存しないようにしたい場合は、JPAを使用する必要があります。

http://en.wikipedia.org/wiki/Java_Persistence_API

その実装の1つで。最も人気のあるものの1つはHibernateです。

http://en.wikipedia.org/wiki/Hibernate_%28Java%29

于 2012-09-28T10:33:39.703 に答える
2

JDBCを使用する場合は、データベースに依存しないAPIを使用します。このAPIのインターフェース(接続、ステートメントなど)は、ターゲットとするデータベースのJDBCドライバーによって実装されます。したがって、Oracleを使用する場合は、Oracleドライバが必要になります。

于 2012-09-28T10:35:14.557 に答える
0

ドキュメントのJDBCには、データベースに接続するための4つの実装があると記載されています。

いいえ、そうではありません。(現在)4つの実装レベルがあると記載されている場合があります。ただし、実装の数は、(少なくとも)ターゲットデータベースの数とデータベースごとの実装の反復回数に依存します。どちらも4よりかなり大きくなります。

于 2012-09-28T11:18:20.723 に答える
0

はい、JDBC APIはデータベースに依存しません。適切なドライバーを提供するだけで、もちろん、JPAを使用しない限り、送信するSQLはそうではありません。

于 2012-09-28T10:34:05.460 に答える
0

この回答では、JDBCだけを使用してベンダーにとらわれないことがいかに難しいかを説明しました。これには2つの層があります。

  • JDBCは、データベースへの接続に使用されるネットワークプロトコルの非常に優れた抽象化です。ただし、あちこちでベンダー固有の癖がいくつか必要になります。これらの癖は、単一のRDBMSベンダーにバインドしている場合は問題ありませんが、複数の製品をサポートする必要がある場合は、非常に厄介になります。
  • SQLは、クエリ言語の非常に優れた標準です。ただし、繰り返しになりますが、あちこちでベンダー固有の癖がかなり必要になります。上記と同じように、1つのRDBMSとその癖をサポートすることは問題ありませんが、複数をサポートすることは非常に困難です。

他の人が述べているように、JPA / Hibernateは、主に、より「高度な」SQL機能(少なくともバージョン5以降の派生テーブル、共用体などを含む)へのアクセスを削除することにより、いくつかの違いを抽象化するのに役立ちます。方言をよりSQL中心に抽象化するには、jOOQが一般的なオプションです。

免責事項:私はjOOQの背後にある会社で働いています。

于 2021-08-20T07:55:14.777 に答える