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

JDBC とは?

最終更新:
💡 Javaからデータベースを扱う共通のAPI

Javaからデータベースなどの表形式データへアクセスするための標準API。対応するJDBCドライバーを通して、接続やSQL実行、結果の取得などを扱う。APIが共通でも、接続設定やSQL、対応機能の違いは確認が必要。

📌 このページのポイント
共通APIから、対応する接続先へ Javaアプリ → JDBC API 対応する ドライバー MySQL 対応する ドライバー PostgreSQL 対応する ドライバー Oracle DB SQL・接続設定・対応機能の差は確認する
Java側のAPIは共通でも、接続先に対応するドライバーと設定が必要。SQLやデータ型まで全て同一になるわけではない。
ひよこ ひよこ
JDBCって何のためにあるの?
ペンギン先生 ペンギン先生
Javaからデータベースを扱う共通APIだよ。接続先に対応するドライバーが、APIの操作を実際の通信へつなぐ。Java側はConnectionなどの共通の型を使って操作できるんだ。
ひよこ ひよこ
ドライバーを替えれば、同じコードが必ず動く?
ペンギン先生 ペンギン先生
必ずとは言えないよ。接続先のURLや設定、SQLの書き方、データ型、対応する機能に違いがある。共通APIは接続先ごとの違いを減らすけれど、移行時には実際のSQLと動作を確認しよう。
ひよこ ひよこ
ドライバーはどう追加するの?
ペンギン先生 ペンギン先生
接続先に対応するものを選ぶよ。MySQLのConnector/Jなら、公式のMaven座標はcom.mysql:mysql-connector-j。使うJavaやサーバーに対応した版を選び、依存関係と接続設定を整えるんだ。古い記事のライブラリ名をそのまま使わないようにしよう。
ひよこ ひよこ
基本の操作は?
ペンギン先生 ペンギン先生
Connectionで接続を扱い、StatementやPreparedStatementでSQLを実行する。行を返す問い合わせではResultSetを読むよ。更新だけなら、結果は更新件数などになる。全ての操作で三つが必須というわけではないんだ。
ひよこ ひよこ
値をSQLへ渡すときは?
ペンギン先生 ペンギン先生
PreparedStatementにはパラメータへ値を設定する仕組みがあるよ。入力値をSQLの文字列へ直接つなぐ方法とは区別しよう。使い終わった接続・文・結果などは、try-with-resourcesなどで適切に閉じるんだ。
ひよこ ひよこ
接続を毎回作るの?
ペンギン先生 ペンギン先生
DataSourceを通して接続を取得する方法もあるよ。JDBCには接続プールを支える仕組みもある。ただし、ドライバーを追加しただけでプールが自動的に構成されるわけではない。利用する環境の設定を確認しよう。
ひよこ ひよこ
ORMと同じもの?
ペンギン先生 ペンギン先生
役割が違うよ。ORMはオブジェクトとデータベースのデータを対応付ける仕組み。JDBCは接続やSQL実行などのAPIだよ。上位の仕組みを使う場合も、どのSQLが実行され、接続やトランザクションがどう扱われるかを見ると理解しやすいんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「JDBC」って出てきたら「Javaからデータベースを扱う共通のAPI」と思えばだいたいOK!
📖 おまけ:英語の意味
「Java Database Connectivity」 = Javaのデータベース接続
💬 JavaとDatabase(データベース)、Connectivity(接続性)を組み合わせた名前。共通の呼び出し口を提供するけれど、全ての接続先の機能が同じになるわけではないよ。

参考資料

← 用語集にもどる