(第4回) テーブルのCRUD操作をするリポジトリインタフェースを作成【Spring Boot2で日記ウェブアプリ】

Spring Boot2.3,2.4で日記投稿ウェブアプリ入門の第4回です。テーブルのCRUD操作のために、Spring Data JPAのCrudRepository(JpaRepository)を継承したリポジトリ(Repository)インタフェースの作成をします。Spring Bootの初心者・入門者の方は、参考にしてみてください。

動作環境と今回の目的

最終更新日:2021/5/19

前回は、Spring Bootの日記投稿ウェブアプリで使用するDBのテーブル構成を決めたり、そのテーブルに合わせてエンティティクラスと初期データ用のdata.sqlの作成をしました。
(第3回) DBのテーブル設計、エンティティクラスと初期データの作成【Spring Boot2で日記ウェブアプリ】

前回でエンティティクラスDiaryからdiaryテーブルが生成されたので、今回はdairyテーブルのCRUD操作をするリポジトリインタフェースの作成をやっていきます。

◾️動作環境やバージョンは以下の通りです。
OS:macOS Catalina(バージョン10.15.5)
開発環境:Eclipse(Pleiades All in One、4.16(2020-06)、Java Full Edition版)
Spring Bootバージョン:2.3.3、2.4.0
Java:11
データベース:H2

今回作成するファイル

今回作成するファイルを先に書いておきます。

新規に作成するファイルは「DiaryRepository.java」の1つです。

リポジトリ(Repository)インタフェースの作成

DBのテーブル操作で基本となるのがCRUD(クラッド)機能です。CRUDとは、C(Create、データ生成)、R(Read、データ取得)、U(Update、データ更新)、D(Delete、データ削除)です。

前回に作成したDiaryエンティティクラスをCRUD操作するために、Spring Data JPAのCrudRepositoryを継承してリポジトリインタフェースDiaryRepository.javaを作成していきます。

それでは、com.example.demoパッケージ内にJavaのインタフェースDiaryRepository.javaを作成して編集します。

package com.example.demo;

import org.springframework.data.repository.CrudRepository;

//CrudRepositoryをJpaRepositoryに変更しても使える
public interface DiaryRepository extends CrudRepository<Diary, Integer> {
}

DiaryRepository.javaは、ただ単にCrudRepositoryを継承しただけのインタフェースです。
ただのインタフェースなので「実装クラスは?」と思われるかもしれませんが、Spring Data JPAではこのインタフェースを実装したクラスを自動で作ってくれるため、プログラマはこのDiaryRepository.javaを使ってDiaryテーブルの簡単なCRUD操作ができるようになります。

また、CrudRepositoryの代わりにJpaRepositoryを使用しても問題ありません。JpaRepositoryはCrudRepositoryを継承しています。

CrudRepositoryを継承しただけのDiaryRepositoryインタフェースを使用してできるCRUD操作には限界があります。
例えば、条件でテーブルのフィールドを指定してデータ取得をしたい場合はDiaryRepositoryインタフェースにメソッドを追加する必要がありますし、メソッドを追加して@Queryを付ければSQLを使用する事もできます。

リポジトリインタフェースの作成とその簡単な利用例については別ページでも書いていますので、そちらも参考にしてみてください。
Spring Bootで実行されるSQLのログ出力の設定【H2, Spring Boot2】

最後に、次回

以上今回は、dairyテーブルをCRUD操作するための機能を提供するために、リポジトリインタフェースを作成しました。
今後はこのリポジトリインタフェースを利用して、diaryテーブルのCRUD操作をしていきます。

次回は、コントローラクラスDiaryControllerを作成し、日記の一覧データを取得する処理を作ります。CRUDでいうと、R(Read、読み込み・データ取得)の部分になります。

(第5回) コントローラクラスの作成、日記一覧データを取得【Spring Boot2で日記ウェブアプリ】
Spring Bootの日記投稿ウェブアプリ開発入門トップ