JavaのDAOでデータを追加・更新・削除するには?処理をメソッドに分ける考え方

本記事は、Schooの「Java入門 中級【2026年版】」第2回「データベース処理とオブジェクト設計の基礎」を学ぶ前後に、DAOでデータの追加・更新・削除を扱う考え方を整理したい方向けの記事です。
DAOは、検索だけを担当するクラスではありません。曲を追加する、曲名を更新する、不要な曲を削除する、といったデータ変更の処理もDAOにまとめられます。
Schoo コースページ:Java入門 中級【2026年版】
DAOは検索だけでなくデータ変更も担当できる
これまでのDAOでは、findById() や findAll() のように、データベースからデータを探す処理を扱いました。
実際のアプリケーションでは、読むだけでなく、新しく登録する、内容を書き換える、削除する処理も必要になります。そのときも、main側にSQLを直接書くのではなく、DAOのメソッドとして整理します。
追加・更新・削除は別々のメソッドにする
データ変更の処理は、目的ごとにメソッドを分けると読みやすくなります。
SongDao dao = new SongDao();
dao.insert(song);
dao.update(song);
dao.delete(song.getId());
このように書けると、呼び出し側では「登録する」「更新する」「削除する」という目的がそのまま読めます。SQLの細かい内容はDAOの中に置きます。
insertメソッドは1件追加する処理
insert() は、新しい行をテーブルに追加する処理です。登録したい値を Song オブジェクトとして受け取り、DAOの中で INSERT を実行します。
public int insert(Song song) {
String sql = "INSERT INTO songs (id, title, artist) VALUES (?, ?, ?)";
pstmt.setInt(1, song.getId());
pstmt.setString(2, song.getTitle());
pstmt.setString(3, song.getArtist());
return pstmt.executeUpdate();
}
main側は、追加したい曲を Song に入れてDAOへ渡します。DAOは、その値をSQLにセットしてDBに登録します。
updateメソッドは既存データを書き換える処理
update() は、すでにある行の値を書き換える処理です。どの行を更新するかを決めるために、通常は WHERE id = ? のような条件を付けます。
public int update(Song song) {
String sql = "UPDATE songs SET title = ?, artist = ? WHERE id = ?";
pstmt.setString(1, song.getTitle());
pstmt.setString(2, song.getArtist());
pstmt.setInt(3, song.getId());
return pstmt.executeUpdate();
}
WHERE を付けないと、対象を絞れず、意図しない行まで更新してしまう危険があります。更新処理では「どの行を変えるのか」を必ず意識します。
deleteメソッドは指定したデータを削除する処理
delete() は、指定した行を削除する処理です。削除では、Song 全体ではなくIDだけを受け取る形にすることもあります。
public int delete(int id) {
String sql = "DELETE FROM songs WHERE id = ?";
pstmt.setInt(1, id);
return pstmt.executeUpdate();
}
削除も更新と同じく、WHERE で対象を絞ることが重要です。delete(11) と書かれていれば、「IDが11の曲を削除する」と読み取れます。
戻り値のintは処理された件数
INSERT、UPDATE、DELETE では、executeUpdate() の戻り値として処理された件数を受け取れます。
int insertCount = dao.insert(song);
int updateCount = dao.update(song);
int deleteCount = dao.delete(song.getId());
戻り値が 1 なら1件処理されたと考えられます。戻り値が 0 の場合は、更新や削除の対象が見つからなかった可能性があります。
executeUpdate() の戻り値は、データベース上で変更された行数として受け取れます。確認問題
次の日本語の要件に合うDAOメソッドを考えてください。
- 新しい曲をsongsテーブルに登録したい
- IDが11の曲名とアーティスト名を書き換えたい
- IDが11の曲を削除したい
- 更新処理の戻り値が0だった場合、何が考えられるか
まとめ
- DAOは検索だけでなく、追加・更新・削除の処理も担当できる
insert()、update()、delete()のように目的ごとにメソッドを分ける- main側はSQLではなく、DAOのメソッド名で処理の目的を読める
executeUpdate()の戻り値は、処理された件数として確認できる