Spring MVC

Spring MVC)게시판 만들기 - Repository 생성

beginner-development 2025. 2. 5. 22:35

리포지토리(Repository)란? 

리포지토리는 JPA를 직접 사용하고 엔티티 메니저를 사용해 엔티티를 저장하고 조회하는 곳으로 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들을 사용하기 위한 인테페이스이다.

(예:findAll, save, delete 등)

데이터 처리를 위해선 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)가 필요한데,

이러한 CRUD를 어떻게 처리할지 정의하는 계층이다.

 

-@Repository : 해당 어노테이션을 사용하면 클래스가 스프링의 Bean으로 등록되어 Component Scan을 통해 자동으로 인식된다.

하지만 Spring Data JPA를 함께 사용하면 해당 어노테이션을 사용하지 않아도 자동으로 빈 등록이 되므로 어노테이션을 굳이 붙이지 않아도 된다고 한다. 필자는 해당 소스가 Repository를 작성한 소스임을 한눈에 명료하게 알아볼 수 있도록 하기위해 해당 어노테이션을 붙여 주었다.

 

Spring Data JPA를 사용하면 JpaRepository라는 인터페이스를 사용할 수 있는데, 해당 인터페이스를 상속받으면 해당 인터페이스 내에 존재하는 기본적인 메서드들을 사용할 수 있다. 대표적인 메서드들로는

  1. findById()
  2. findAll()
  3. save()
  4. deleteById()

등이 있다. 사실상 JpaRepository라는 인터페이스 하나로 CRUD의 모든 기능이 가능해지는 것이다. 또한 해당 인터페이스에 존재하지 않는 매서드나 존재하지만 버전 등의 문제로 사용할 수 없는 메서드들은 해당 인터페이스가 제공하는 '구현한 메서드의 이름을 인식하여 자동으로 쿼리를 생성하는 기능'과 @Query 어노테이션을 사용한 '동적 쿼리 생성' 기능을 사용하여 쉽게 생성할 수 있다. 해당 프로젝트에선 회원가입이나 로그인 기능이 없는 게시판 프로젝트이기 때문에 JpaRepository 내의 메서드만으로도 충분하여 따로 메서드를 추가로 만들지는 않았다.

 

※JpaRepository를 사용하기 위해선 JpaRepository옆에 <(엔티티 명), (해당 엔티티의 PK의 데이터 타입)>을 필수적으로 붙여주어야 한다. 예)JpaRepository<Board, Long>