JDBCとは? わかりやすく解説

ジェー‐ディー‐ビー‐シー【JDBC】


Java Database Connectivity

(JDBC から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/11 16:35 UTC 版)

ナビゲーションに移動 検索に移動

Java Database Connectivity[1] (JDBC)は、Java関係データベースの接続のためのAPIODBCをベースにサン・マイクロシステムズおよび DataDirect が共同で開発していると言われている。そのためドライバのデフォルトの自動コミットの有効化など似ている点も多々ある。

Java においてSQLを使用して、関係データベース管理システム (RDBMS) などと接続する機能を標準化(抽象化)している。

元はJDK 1.0の拡張APIという位置付けであったが、JDK 1.1で正式にJavaの基本SDKに同梱されるようになった。標準的な機能 (API) は Java SE に含まれている。JDBCの規格は Java SDK とは独立して行われており、APIのアップデートは随時行われている。

ドライバ

JDBCを利用する為には、100% Pure Java 製の Apache Derby が同梱されている Java SE 6 以降のSDK[2]を除き、各DBMS用のJDBCドライバを用意する必要がある。現在開発が行われているほとんどのデータベースではJDBCドライバが用意されている。 これらのドライバを管理するのが JDBC ドライバ・マネージャーである。JDBC ドライバ・マネージャーを用いると、複数のJDBCドライバを同時に利用することができる。JDBCを使うユーザーは、JDBCドライバをロードし(多くはClass.forName("ドライバクラス名")メソッドを利用して呼び出される。また、JDBC4.0以降であればドライバの自動解決が機能するため、DriverManager.getConnnection("jdbc:subprotocol:subname形式のデータベースURL")メソッドを使うことができる。これらのメソッドを利用した場合コンパイラによるそのドライバの依存チェックが行われない為、コンパイル時にドライバをあらかじめ参照できる様に設定しなくて良いなどの利点がある)、JDBC ドライバ・マネージャーを使ってデータベースドライバを取得し、データベースと接続を行って、データベースアプリケーションを記述する事になる。 また、Javaオブジェクト指向言語の特性を生かして、各ドライバはJDBCの基本APIに無い機能を同梱する事もできる。この場合、JDBC APIのスーパーセットのクラスを呼び出すことでこれらの機能を利用可能にすることができる。

たとえば、初期のオラクルOracle Database (Oracle 8) 用JDBCドライバは、当時の JDBC API が BLOBCLOBに対応していなかったため、独自に機能拡張をしてBLOBとCLOBに対応していた。

JDBCドライバのタイプ

JDBCドライバは4つのタイプに分類されている。

タイプ1
JDBC-ODBC ブリッジ JDBCからのクエリー要求を、ODBCを経由して受け渡し、データベースとアクセスするもの。ODBCドライバが必須であり、ハードウェアOSに依存する。Java SE7 までに標準で添付されているドライバでもある。Java7では非推奨となり、Java8では標準から削除された[3]
タイプ2
ネイティブ API ドライバ JDBCからのクエリー要求を、オペーレーティングシステム上のDLLや専用ライブラリに受け渡し、そこからデータベースにアクセスするもの。Type1に比べて階層が薄く済むため高速化が期待できる点とTCP/IPに依存しない利点があるが、やはりハードウェアとオペレーティングシステムに依存する。オラクルでいうとOCIドライバがこれに該当する。
タイプ3
通信プロトコルドライバ JDBCからのクエリー要求を Java で記述されたのドライバ内で独自のプロトコルに変換し、それをアプリケーションサーバを通じてデータベースにアクセスするもの。機種依存・データベース依存をせずに軽量なドライバが作成可能だが、中間サーバを挟むためにパフォーマンスに問題が起きる。
タイプ4
ネイティブプロトコルドライバJDBCからのクエリー要求をすべて Java 上で処理してしまうもの。Java 上にデータベースにアクセスするためのすべての機能を乗せる為、ドライバのサイズが大きくなる、パフォーマンスが若干低下する。基本的にTCP/IPでしか利用できないなどの欠点があるがハードウェアとオペレーティングシステムに依存しないため移植性に優れている。オラクルでいうと thin ドライバがこれ該当する。

タイプ1、タイプ2はDBMSのDLLファイルやライブラリファイルを呼び出す形となるため、JVMのメモリー管理外となる。タイプ3、タイプ4についてはJVM上で Java のクラスとして実装されているためJVM上のガベージコレクションの対象となり管理が行いやすく、流れとしてはTYPE4が主流となっている。

Java とデータベース

後に大規模システム開発において、Java によるアプリケーションソフトウェア開発が一般的になるきっかけとなったのは、関係データベースアクセスを Java から行う JDBC が発表されてからである。

さらに Java で大規模エンタープライズシステムを開発するための仕様「Jakarta EE」には、関係データベースの表(テーブル)の行データを、Javaオブジェクトに1対1に対応させ、オブジェクト内容の永続化=行データの保存というデータのリンクと、オブジェクトのメソッド呼び出し=データベースへのトランザクション処理を同期させる特殊な Java Beans を動作・管理する機構である「エンタープライズ Java ビーンズ」 の「エンティティ・ビーン」が導入された。

EJB 2.1までは、オブジェクト-関係の間にあるインピーダンスミスマッチにより関係データベースの機能を十分に生かせないことや性能面の問題があったが、EJB 3.0以後の仕様により改善されてきている。

EJB 3.2で「エンティティ・ビーン」が廃止され、Java SE および Java EE(現・Jakarta EE)共通向けの、独立した永続化フレームワークJava Persistence API (JPA) に進化した。

JDBCドライバの供給元

脚注

  1. ^ Java JDBC API
  2. ^ JavaDB (Apache Derby) は、エンドユーザ向けのJREには同梱されないため、アプリケーションとともに再配布する必要がある。
  3. ^ http://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/bridge.html

関連項目

外部リンク


JDBC

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/10/05 22:34 UTC 版)

WebObjects」の記事における「JDBC」の解説

WebObjectsはJDBCドライバ使ってデータベース通信する

※この「JDBC」の解説は、「WebObjects」の解説の一部です。
「JDBC」を含む「WebObjects」の記事については、「WebObjects」の概要を参照ください。

ウィキペディア小見出し辞書の「JDBC」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「JDBC」の関連用語

JDBCのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



JDBCのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【JDBC】の記事を利用しております。
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのJava Database Connectivity (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのWebObjects (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS