【ジェイディービーシー】

JDBC とは?

💡 Javaとデータベースをつなぐ「共通語」
📌 このページのポイント
JDBCの抽象化レイヤー Java アプリ Connection Statement ResultSet JDBC API JDBC ドライバー MySQL Driver PostgreSQL Driver Oracle Driver MySQL PostgreSQL Oracle コードは共通 差し替え可能 DB を自由に選択
JDBCによるデータベース接続の抽象化
ひよこ ひよこ

JDBCって何のためにあるの?

ペンギン先生 ペンギン先生

Javaアプリケーションからデータベースにアクセスするための標準APIだよ。MySQLでもPostgreSQLでもOracleでも、JDBCを使えば同じJavaコードでデータベースを操作できるんだ。

ひよこ ひよこ

なんで統一する必要があるの?データベースごとにコードを書けばいいんじゃないの?

ペンギン先生 ペンギン先生

データベースを変更するたびにアプリケーション全体を書き直すのは大変でしょ?JDBCがあれば、ドライバーという部品を差し替えるだけで切り替えられるんだ。プリンターUSBケーブルみたいなもので、ケーブルの規格が統一されていればどのプリンターでも使えるのと同じだよ。

ひよこ ひよこ

JDBCドライバーってどうやって手に入れるの?

ペンギン先生 ペンギン先生

データベースベンダーが提供しているよ。Mavenなどのビルドツールで依存関係に追加するだけで使えるんだ。たとえばMySQLなら mysql-connector-java、PostgreSQLなら postgresql というライブラリをプロジェクトに追加するだけだね。

ひよこ ひよこ

実際のコードはどんな感じで書くの?

ペンギン先生 ペンギン先生

基本の流れは、接続文字列データベースに接続して、SQLを実行して、結果を受け取って、接続を閉じる。Connection、Statement、ResultSet という3つのオブジェクトを使うのがお決まりのパターンだよ。

ひよこ ひよこ

ORMとはどう違うの?

ペンギン先生 ペンギン先生

JDBCはSQLを直接書いてデータベースを操作する「低レベル」なAPIORMオブジェクトテーブルを自動マッピングする「高レベル」な仕組みだよ。HibernateやMyBatisといったORMフレームワークも、裏側ではJDBCを使ってデータベースと通信しているんだ。

ひよこ ひよこ

ODBCっていう似た名前のものもあるけど、関係あるの?

ペンギン先生 ペンギン先生

ODBCJavaに限らず、CやPythonなど多くの言語から使えるデータベース接続の標準規格だよ。JDBCはODBCの考え方をJava向けに再設計したもの。名前が似ているのは偶然じゃなくて、同じ「ドライバー抽象化する」という設計思想を受け継いでいるんだ。

ひよこ ひよこ

最近のJava開発でもJDBCは使われているの?

ペンギン先生 ペンギン先生

もちろん現役だよ。Spring BootのJdbcTemplateやJPAの内部でも使われているし、コネクションプールのHikariCPもJDBCの上に構築されている。直接JDBCのコードを書く機会は減ったけど、トラブルシューティングやパフォーマンスチューニングではJDBCの知識が欠かせないんだ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「JDBC」って出てきたら「Javaからデータベースに接続するための標準API」と思えればだいたいOK!
📖 おまけ:英語の意味
「Java Database Connectivity」 = Javaデータベース接続
💬 Java(プログラミング言語)+ Database(データベース)+ Connectivity(接続性)で、Javaとデータベースをつなぐ仕組みという意味だよ
← 用語集にもどる