はじめに
前回は、ユーザー情報をデータベースと対応づける「エンティティ(Userクラス)」を作成しました。
今回は、そのエンティティを使って データベースへのアクセスを簡単に行える仕組み=リポジトリ を作っていきます!
UserRepository の作成
Spring Data JPA を使えば、リポジトリの実装はとてもシンプルに書けます!
package com.example.noteapp.backend.repository;
import com.example.noteapp.backend.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
リポジトリってなに?
リポジトリ(Repository)は、エンティティとデータベースのやり取りを担当する層です。
たとえば、以下のような操作が簡単に行えるようになります:
-
ユーザーの保存(INSERT)
-
ユーザーの取得(SELECT)
-
ユーザーの削除(DELETE)
-
ユーザーの更新(UPDATE)
自分でSQLを書く必要はなく、JpaRepository を継承するだけでOKです!
EntityとRepositoryの関係
Entity
は データベースのテーブルと1対1で対応するクラス です。
一方、Repository
は その Entity に対するデータ操作(CRUD)を担当するインターフェース です。
つまり、以下のような役割分担になります。
層 | 役割 | 具体例 |
---|---|---|
Entity | データの形(構造)を定義 |
User.java :usersテーブルに対応 |
Repository | データベースへのアクセス処理を担当 |
UserRepository.java :Userエンティティの検索・保存など |
何が便利なの?
Spring Data JPAを使えば、JpaRepository
を継承するだけで、以下のような便利なメソッドが自動的に使えるようになります。
userRepository.findAll(); // 全件取得
userRepository.findById(1L); // IDで1件取得
userRepository.save(user); // 新規作成 or 更新
userRepository.delete(user); // 削除
どういう仕組み?
ChatGPTによると、
repositoryのメソッドを呼ぶと、その裏側でEntityの情報をもとにSQL文が作られてDBに送られます。
なので、開発者はSQLを書かなくてもJavaのメソッドを使うだけでDB操作ができるわけです。
ということだそうです。
なんとなく理解できてきました。
最後に
今回はリポジトリについて勉強しました。
Spring Data JPAのリポジトリを使うことで、SQLを書くことなく簡単にデータベース操作ができることがわかりました。
エンティティとリポジトリの役割を理解しておくと、今後の開発でもイメージしやすくなりそうです。