0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ポートフォリオ開発記】 #4 ユーザーリポジトリの作成

Posted at

はじめに

前回は、ユーザー情報をデータベースと対応づける「エンティティ(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を書くことなく簡単にデータベース操作ができることがわかりました。
エンティティとリポジトリの役割を理解しておくと、今後の開発でもイメージしやすくなりそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?