JDBC ドライバの基礎知識:仕組みと5つのタイプを徹底解説

by Jerod Johnson 翻訳:兵藤朋代 | 2024年02月09日

What is JDBC

Java アプリケーションにおいて、JDBC ドライバはデータベースへのアクセスで基本となるものです。この記事では、Java アプリケーションとデータベース間のシームレスなアクセスを支えるJDBC ドライバについて解説します。複数のデータソースに対する抽象化・標準化されたデータアクセスを担保することで、Java テクノロジーの利用に対し大きな貢献をしてきたものがJDBC です。

JDBC ドライバの仕組みやタイプごとの特色を理解し、必要となるコンポーネントや使っているAPI・プロトコルを把握することで、構成やパフォーマンスについて最適な判断をくだすことができるようになります。また、クラウド時代のJDBC の拡張的な使われ方についても紹介をしていきます。

JDBC ドライバとは?

JDBC ドライバは、Java アプリケーションが各種データベースにアクセスするためのコンポーネントです。Java プログラムからデータベースにアクセスする際に、もしJDBC のような統一仕様がなければ、Java プログラムで異なるデータベースのプロトコルにアクセスするためのプログラムを実装しなければならず、開発や維持の負荷になってしまいます。Java では、データベースに依存しない標準仕様であるJDBC API が用意されています。そのJDBC ドライバは、Java アプリケーションからJDBC API を使ってデータベースにアクセスするためのコンポーネントになります。JDBC は「Java Database Connectivity」の略称と言われています。

how JDBC work

Java API という抽象化された標準データ接続技術により、Java アプリケーションとして接続データベースや実行プラットフォームに依存しないWORA(Write Once, Run Anywhere)というJava のメリットを体現することができていると言えます。

JDBC ドライバには、複数のタイプがあります。使用するプロトコルや間に入るコンポーネントの違いにより以下のように分かれています。

  • Type 1:JDBC-ODBC Bridge ドライバ
  • Type 2:Native API ドライバ
  • Type 3:Net Protocol ドライバ
  • Type 4:Pure Java ドライバ またはThin ドライバ
  • Type 5:Custom ドライバ

5種類のJDBC ドライバ

Type 1:JDBC-ODBC Bridge ドライバ

Type 1 JDBC ドライバは、JDBC-ODBC ブリッジとして機能します。主にWindows OS でのデータアクセス標準として使われてきているODBC API にJava アプリケーションからアクセスするためのドライバーです。これはODBC 規格が1992年とJDBC 規格(1996年から)よりも歴史が古く、多くのデータベースでODBC ドライバ が用意されていたこともあり、このようなODBC を前提にした仕様となっています。JDBC-ODBC Bridge ドライバ を使えば、Java アプリケーションからJDBC API を使ってODBC ドライバ 経由でデータベースにアクセスすることが可能になります。

今では主要なデータベースではJDBC ドライバが提供されているので、JDBC-ODBC Bridge ドライバ の利用は少なくなっています。今でもODBC での接続しかできないレガシーのデータベースやAccess などへのJava からの接続に使われています(Java 8 以降では、同梱されなくなっています)。考慮すべき点としては、ODBC API・Windows OS のODBC Manager に依存する構成になるので、Windows OS に実行環境が限定されます。また、Java API-ODBC API-Native Protocol とプロトコル変換回数が多いので、パフォーマンスには要注意です。

Type 1 ODBC-JDBC-Bridge Driver

Type 2:Native API ドライバ

Type 2 JDBC ドライバは、ネイティブAPI ドライバ もしくは、Partial Java ドライバ とも呼ばれます。このタイプでは、データベースのクライアントであるJava アプリケーションにデータベース固有のネイティブデータベースクライアントライブラリを配置し、そのデータベースクライアントライブラリを通じてデータベースにアクセスします。Java からの呼び出しは、データベース固有のNative API リクエストに変換されます。オラクルデータベースにアクセスするためのOCI(Oracle Call Interface)を提供しており、これを使う方法がType 2 です。クライアントライブラリを実行環境にすべて配置する必要がある点が考慮すべき点です。逆にクライアントライブラリが特定の環境にのみインストール可能な場合などは実行環境の制約となります。

Type 2 JDBC Driver

Type 3:Net Protocol ドライバ

Type 3 JDBC ドライバは、ミドルウェアまたはネットプロトコルドライバーと呼ばれます。データベースの前に特定のミドルウェアが存在し、Java アプリケーションからは、ネットワーク固有のプロトコルを使用してデータアクセスを行います。クエリを受けたミドルウェアは、固有のネットワークプロトコルをネイティブAPI に変換してデータベースにクエリします。特徴としては、Java アプリケーション側がピュアJava となるため実行環境に制限がないこと、そして接続先データベースの種類が増えてもJava アプリケーション側にドライバー追加などの負荷がないことです。柔軟でスケーラブルが実現できていると言えます。また、データベース側が特定のミドルウェア以外からのネイティブAPI アクセスを許容していない場合などにも活用できます。

Type 4 JDBC Driver

Type 4:Pure Java ドライバまたはThin ドライバ

Type 4 JDBC ドライバは、特定のクライアントのインストールや構成を必要とせずに、JDBC ドライバがソースデータベースと直接通信します(そのため「thin」と呼ばれています)。現在では、このType 4 JDBC ドライバが最も主流で、多くのJava アプリケーションからデータベースとハイパフォーマンスで直接通信するために使用されます。ピュアJava のため、実行環境を問わず、シンプルで高い柔軟性を持ちます。そして間に入るプロトコル変換が少なく、ハイパフォーマンスなデータベースアクセスを実現できます。データベースサーバーへの直接アクセスを必要とするため、セキュリティやネットワーク接続に厳しい懸念がある場合には最適なオプションとは言えない場合があります。

Type 3 JDBC Driver

Type 5:Custom ドライバ

Type 5 JDBC ドライバは、クライアントのインストールを必要とせずにデータソースと直接通信するという点で、Type 4 JDBC ドライバと同じです。今日では、Java アプリケーションがアクセスしたいデータはデータベースだけではありません。SaaS(Software-as-a-Service サービスとしてのソフトウェア)アプリケーション、フラットファイルストア、非リレーショナルNoSQL やビッグデータストアなど、多様なソースへの接続が求められており、これらにJDBC 規格でアクセスするドライバーがType 5 JDBC ドライバです。また、データベースに直接接続する場合、他のドライバータイプ(タイプ4 を含む)とは一線を画す高度な機能と改善されたパフォーマンスが備わっています。Type 5 ドライバ は、データベースベンダーから提供される既成のJDBC ドライバがシステムのニーズを満たさない場合、もしくはSaaS などのようにベンダーからJDBC ドライバが提供されていない場合に採用されます。しかし、ドライバーを社内で構築すると、多大な開発コストおよびメンテナンスコストが発生する可能性があります。

Type 5 JDBC Driver

JDBC ドライバのユースケース

Type 1: JDBC-ODBC Bridge ドライバ

企業内でODBC 接続しか接続ができないデータベースがある場合には、Java アプリケーションからのアクセスにはJDBC-ODBC Bridge ドライバ を使う必要があります。CData では、CData JDBC-ODBC Bridge ドライバ を提供しています。Java 8 以降にはJDBC-ODBC Bridge の同梱がなくなったので、必要な際にはぜひ、CData の商用サポート付きのJDBC-ODBC Bridge ドライバ をお使いください。

Type 2: Native API ドライバ

金融取引企業やリアルタイム分析を行う企業など、大量データを迅速に処理する必要がある組織では、Type 2 JDBC ドライバが使用されることがよくあります。CData JDBC ドライバfor Oracle は、SSH 接続などの機能を強化したType 5 ドライバ ですが、データベースのクライアントライブラリであるOCI のインストールが必要なことから、典型的なType 2 JDBC ドライバの形で提供をしています。非データベースをソースとするSAP 向けのCData JDBC ドライバfor SAP は、SAP のRFC API に対応するSAP ライブラリを使用する必要があり、Type 2 ドライバ の形になっています。

Type 3: Net Protocol ドライバ

Type 3 ドライバ の利点は、何といってもアプリケーション側はデータアクセスモジュールに至るまでロジック変更をせずにデータベース接続の大規模なプールを管理できる点です。また、セキュリティの観点から、Java アプリケーションからデータベースのネイティブAPI での接続を制限するケースも見られます。例えば、クラウド環境のJava アプリケーションなどからオンプレミスのデータベースアクセスには、ネイティブAPI ではなく、セキュアなREST API でのアクセスの方がメジャーでしょう。しかし、REST API のためにJava アプリケーション側でJDBC API ではないデータアクセスを実施することのデメリットが感じられる場合、CData API Server をデータアクセスのミドルウェアとしてデータベース側に立て、Java アプリケーション側にはAPI Server のプロトコルであるOData(REST API)のプロトコルにJDBC を変換するドライバーを用いれば、API Server に対してアクセスを行うことができます。

JDBC with API Server

複数のSaaS にアクセスするようなJava アプリケーションの場合でも、Type 3 的な構成を用いることが可能です。CData Connect Cloud は、100を超えるSaaS データに対するデータアクセスを仮想化してくれるミドルウェアとして機能します。この構成ではJava アプリケーション側はJDBC ドライバを含めて全くモジュールを追加することなく、複数のSaaS データへの接続をすることが可能になり、とても拡張性が高くフレキシブルです。

JDBC with CData Connect cloud

Type 4: Pure Java / Thin ドライバ

Type 4 ドライバ の特徴は、その「薄さ」、つまり外部ライブラリや複雑なミドルウェアアプリケーションなしで動作する点です。個々のサービス間に依存性を持たせないというモダンなアーキテクチャに最もフィットするものです。

Type 5: Custom ドライバ

従来、データはデータベースに保存されてきましたが、今では企業データの多くはビジネスオペレーションのためのクラウドサービスの中に格納されています。企業は、それぞれの目標に最適なCRM(顧客関係管理)、ERP(エンタープライズリソースプランニング)、HCM(人的資本管理)、会計ソリューションを選択して使っています。データがデータベースの外部に分散している場合、組織はタイプ5 ドライバーを使用して、データがどこにあってもSQL でデータにアクセスできるようになります。CData JDBC ドライバは、270種類以上のSaaS やデータソースにJDBC ベースのSQL アクセスを実現しています。今まで使ってきたシステム資産であるJava カスタムアプリケーション、BI、アナリティクス、レポーティングツールを置き換えるのではなく、使用するデータソースに対応するJDBC ドライバを配置するだけで、新しいクラウドデータソースを企業アプリケーションに連携することができます。

CData JDBC ドライバ

CData JDBC ドライバは、JDBC ドライバとしてレガシーから最新のユースケースまでをサポートします:

  • 圧倒的なパフォーマンス:スピードと効率が最適化され、高性能なデータアクセスを実現。
  • 標準ベースのアクセス:JDBC 標準に準拠し、幅広いツールやプラットフォームからの互換利用が可能
  • 270種類以上の対応データソース:SaaS アプリケーション、NoSQL データソース、ビッグデータストア、RDBMS を広範にサポート。
  • シンプルなJDBC / SQL アクセス:使いやすいインターフェースにより、あらゆるBI、レポーティング、ETL ツール、カスタムアプリケーションでデータ統合が簡単かつ利用しやすく。

まとめ

この記事ではJDBC の仕組みや、JDBC ドライバのタイプ、そして考慮すべき点を見てきました。データアクセスの抽象化・標準化は大変重要なテーマです。また同時に柔軟性、スケーラビリティといった要素を満たす必要があります。特にWeb API のアクセスでは、このような統一されたデータアクセスというものの実現が難しく、個別のAPI に対応するコードを書かないといけないと感じている方も多いと思います。CData では、業務で利用できるあらゆるシステムに対し、JDBC API という極めて標準化されたテクノロジーでのアクセス手法を提供します。

関連コンテンツ

CData JDBC ドライバで270種類以上のSaaS / DB にデータアクセス

30日間の無償トライアルはコチラ お問い合わせ