리포지토리(Repository)란?
리포지토리는 JPA를 직접 사용하고 엔티티 메니저를 사용해 엔티티를 저장하고 조회하는 곳으로 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들을 사용하기 위한 인테페이스이다.
(예:findAll, save, delete 등)
데이터 처리를 위해선 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)가 필요한데,
이러한 CRUD를 어떻게 처리할지 정의하는 계층이다.
-@Repository : 해당 어노테이션을 사용하면 클래스가 스프링의 Bean으로 등록되어 Component Scan을 통해 자동으로 인식된다.
하지만 Spring Data JPA를 함께 사용하면 해당 어노테이션을 사용하지 않아도 자동으로 빈 등록이 되므로 어노테이션을 굳이 붙이지 않아도 된다고 한다. 필자는 해당 소스가 Repository를 작성한 소스임을 한눈에 명료하게 알아볼 수 있도록 하기위해 해당 어노테이션을 붙여 주었다.
Spring Data JPA를 사용하면 JpaRepository라는 인터페이스를 사용할 수 있는데, 해당 인터페이스를 상속받으면 해당 인터페이스 내에 존재하는 기본적인 메서드들을 사용할 수 있다. 대표적인 메서드들로는
- findById()
- findAll()
- save()
- deleteById()
등이 있다. 사실상 JpaRepository라는 인터페이스 하나로 CRUD의 모든 기능이 가능해지는 것이다. 또한 해당 인터페이스에 존재하지 않는 매서드나 존재하지만 버전 등의 문제로 사용할 수 없는 메서드들은 해당 인터페이스가 제공하는 '구현한 메서드의 이름을 인식하여 자동으로 쿼리를 생성하는 기능'과 @Query 어노테이션을 사용한 '동적 쿼리 생성' 기능을 사용하여 쉽게 생성할 수 있다. 해당 프로젝트에선 회원가입이나 로그인 기능이 없는 게시판 프로젝트이기 때문에 JpaRepository 내의 메서드만으로도 충분하여 따로 메서드를 추가로 만들지는 않았다.
※JpaRepository를 사용하기 위해선 JpaRepository옆에 <(엔티티 명), (해당 엔티티의 PK의 데이터 타입)>을 필수적으로 붙여주어야 한다. 예)JpaRepository<Board, Long>
'Spring MVC' 카테고리의 다른 글
Spring MVC)게시판 만들기 - Controller 생성 (1) | 2025.02.07 |
---|---|
Spring MVC)게시판 만들기 - Service 생성 (0) | 2025.02.06 |
Spring MVC)게시판 만들기 - Entity 생성 (0) | 2025.02.05 |
Spring MVC)게시판 만들기 - 프로젝트 환경 설정 (0) | 2025.02.04 |
Spring MVC)게시판 만들기 - MVC 개념 정리 (0) | 2024.11.08 |