はじめに:JDBCってなに?
「Javaでデータベースを扱いたい」
そんな時に登場するのが JDBC(Java Database Connectivity) です。
JDBCは、Javaアプリケーションとデータベースの橋渡しをしてくれる仕組みで、アプリの中からSQLを実行したり、データベースの中身をJavaオブジェクトとして使ったりすることができます。
JDBCを使えば、次のようなことができます:
- ユーザー情報をデータベースに登録
- 商品のリストをデータベースから読み込み
- 入力されたデータを条件に検索・更新・削除
つまり、「Javaで本格的なアプリを作るなら絶対に避けて通れない技術」です!
1. JDBCの仕組みと構造
JDBCは、Javaで書いたプログラムから、リレーショナルデータベース(MySQL、PostgreSQL、Oracleなど)に接続して、SQLを発行し、結果を受け取るためのAPIです。
🎯 JDBCが果たす3つの役割:
- データベースへの接続
- SQL文の実行
- 結果の取得・表示・操作
この3ステップで、JavaとDBがつながります。
2. JDBCの構成要素
名前 | 役割 |
---|---|
DriverManager | DB接続の管理 |
Connection | 接続情報の保持 |
Statement / PreparedStatement | SQLの実行 |
ResultSet | 検索結果の取得 |
特に、PreparedStatement
はセキュリティ上重要な役割もあります(後述します)。
3. 実際のJDBCの流れ(コード例)
🔧 データベース接続とSQL実行(MySQL編)
1 |
String url = "jdbc:mysql://localhost:3306/sampledb";<br>String user = "root";<br>String password = "pass";<br><br>try (Connection conn = DriverManager.getConnection(url, user, password);<br> PreparedStatement ps = conn.prepareStatement("SELECT * FROM users")) {<br><br> ResultSet rs = ps.executeQuery();<br> while (rs.next()) {<br> System.out.println(rs.getInt("id") + ":" + rs.getString("name"));<br> }<br>} catch (SQLException e) {<br> e.printStackTrace();<br>}<br> |
try-with-resources
で自動的に接続を閉じますPreparedStatement
を使うことで安全に値を埋め込めます
4. SQLの種類とJDBCでの操作
🔸 INSERT(登録)
1 |
String sql = "INSERT INTO users (name, email) VALUES (?, ?)";<br>PreparedStatement ps = conn.prepareStatement(sql);<br>ps.setString(1, "田中太郎");<br>ps.setString(2, "tanaka@example.com");<br>ps.executeUpdate();<br> |
🔹 SELECT(取得)
1 |
ResultSet rs = ps.executeQuery();<br>while (rs.next()) {<br> System.out.println(rs.getString("email"));<br>}<br> |
🔸 UPDATE(更新)
1 |
String sql = "UPDATE users SET email = ? WHERE id = ?";<br>PreparedStatement ps = conn.prepareStatement(sql);<br>ps.setString(1, "newmail@example.com");<br>ps.setInt(2, 1);<br>ps.executeUpdate();<br> |
🔹 DELETE(削除)
1 |
String sql = "DELETE FROM users WHERE id = ?";<br>PreparedStatement ps = conn.prepareStatement(sql);<br>ps.setInt(1, 1);<br>ps.executeUpdate();<br> |
5. PreparedStatementを使う理由
SQL文を安全に実行するためには、PreparedStatement
を使うのが鉄則です。
- ?でプレースホルダを使い、SQLインジェクションを防止
- SQLが事前にコンパイルされ、高速に実行できる
悪意のあるユーザーによるデータベース攻撃を防ぐためにも、基本からしっかり覚えておきましょう。
6. トランザクション制御
複数の処理をまとめて行いたいとき、失敗したらまとめて取り消したいときはトランザクションが必要です。
1 |
conn.setAutoCommit(false);<br>try {<br> // insert, updateなど複数のSQL<br> conn.commit();<br>} catch (SQLException e) {<br> conn.rollback(); // すべて元に戻す<br>}<br> |
7. DAOとDTOでコードを整理しよう
✅ DTO(データを入れる箱)
1 |
public class User {<br> private int id;<br> private String name;<br> private String email;<br> // getter/setter<br>}<br> |
✅ DAO(データを操作するクラス)
1 |
public class UserDao {<br> public List<User> findAll() {<br> // DBからユーザー一覧を取得してリストに入れる<br> }<br>}<br> |
アプリが大きくなってきたとき、この構造にしておくとコードが読みやすくなります!
8. WebアプリでのJDBC活用
JavaのWebアプリ(Servlet/JSP)やSpring BootのWebアプリでも、JDBCは活躍します。
- フォームから送られたデータをデータベースに保存
- ログイン画面の認証処理
- 投稿されたコメント一覧の表示
これらすべてに、JDBCの仕組みが関わっています。
9. 学習の進め方
JDBCはとても大切な技術ですが、最初はつまずきやすいポイントもあります。
そこでおすすめなのが:
📘 「絶対にJavaプログラマーになりたい人へ。」
フォーム入力、DB接続、Webアプリへの応用など、実践的な内容をやさしく解説した一冊です。
まずはこれで基礎力を身につけましょう!
🧑🏫 実践と転職支援を受けたい方へ
「ひとりで進めるのが不安」「コードレビューしてほしい」
そんな方には サイゼントアカデミー がピッタリです。
- プログラミング学習のサポート
- コード添削、レビュー
- Java転職まで徹底支援!
✨まとめ
内容 | ポイント |
---|---|
JDBCとは? | JavaとDBをつなぐ仕組み |
操作方法 | 接続→SQL実行→結果取得 |
セキュリティ | PreparedStatement を必ず使おう |
設計方法 | DAO/DTOで整理すると◎ |
学習方法 | 書籍とスクールで段階的に学ぼう |
Javaで本格的なアプリを作るためには、JDBCの習得は避けて通れません。
このブログで基礎を理解したら、ぜひ実際にコードを書いて、DBと連携するアプリを作ってみてください!
コメント