리포지터리 / CRUD

Kingyj·2025년 1월 7일

리포지터리 (Repository)

  • 데이터를 저장 및 관리하는 곳이다.
  1. 일반적 의미 (저장소)

    • 코드 저장소 : 개발자들이 프로젝트 코드를 저장하고 협업하는 공간.
      (Github,Bitbucket 같은 플랫폼등이 있다.)
  2. 소프트웨어 설계 패턴에서의 리포지터리

    • 리포지터리 패턴은 데이터 접근을 추상화한 설계 방식이다.

    • 데이터베이스, API, 파일 등 데이터의 출처에 상관없이 데이터를 가져오고 저장하는 작업을 담당하는 계층을 말한다.


    CRUD

  • 소프트웨어에서 데이터를 다루는 4가지 기본 작업.
    • C (Create) : 새로운 데이터를 생성.
      (새 유저를 추가)

    • R (Read) : 데이터를 읽거나 조회.
      (특정 유저 정보를 가져온다)

    • U (Update) : 기존 데이터를 수정.
      (유저의 정보를 수정 및 업데이트)
      -D (Dlelte) : 데이터를 삭제.
      (유저 정보 삭제)


    리포지터리와 CRUD의 관계

리포지터리와 CRUD를 같이 포스팅한 이유는 깊은 관계가 있기 때문이다.

리포지터리는 주로 CRUD 작업을 추상화해서 처리하는 역할을 맡는다.

리포지터리의 역할

  • 리포지터리 패턴에서는 데이터베이스 작업(CRUD)을 직접 노출하지 않고, 특정 메서드를 통해 작업을 처리한다.

    @UsereRepository에는 다음과 같은 메서드가 있다.

  • createUser(user)

  • getUserById(id)

  • updateUser(user)

  • DeleteUser(id)


    스프링부트에서 엔티티(Entity)로 테이블을 구성하여 데이터를 관리할 수 있지만, 테이블의 데이터를 저장, 조회, 수정, 삭제 등을 할 수가 없기 때문에 이와 같은 데이터를 관리하려면 데이터베이스와 연동하는 리포지터리가 필요하다.

개인적 질문 / 답변

Q) 그러면 리포지터리랑 서버랑 같은 거 아닌가?

A) 둘은 서로 관련은 있지만, 다르다.
리포지터리는 데이터를 다루는 소프트웨어 설계의 한 부분이다. 데이터베이스와 같은 저장소에 직접 연결돼서 데이터를 다룬다.
리포지터리는 서버의 일부로 동작하며 클라이언트와 직접 소통하지 않는다.
반대로 서버는 클라이언트의 요청을 처리하고 응답을 보내는 역활을 한다. 클라이언트가 요청한 데이터를 리포지터리와 같은 내부 구성 요소를 사용해 처리한다.

Q) 그러면, 게시판 만들기 프로젝트를 예를 들어 서버와 리포지터리는 각각 무은 역할을 하는거야?

A) 서버는 클라이언트로부터 요청을 받아 처리하고, 결과를 다시 돌려주는 역할을 한다. 리포지터리는 서버로부터 받은 요청을 처리하고 데이터베이스와 직접적으로 상호작용한다.

예를 들어,
1. 게시판 목록 보기

  • 클라이언트 : " 게시글 목록 보여줘 "
    (서버로 요청)
  • 서버에서 요청을 받고 리포지터리에게 게시글 요청
    (리포지터리로 요청)
    -리포지터리에서 데이터베이스의 게시글 목록 조회
    (서버로 전달)
  • 리포지터리에서 답을 받은 서버는 데이터를 클라이언트에게 응답.
    (클라이언트로 전달)

실제 상황으로 예를 다시 들어보겠다.

손님(클라이언트)가 종업원(서버)에게 "김치볶음밥 주세요" (데이터요청).

종업원(서버)가 주방(리포지터리)에게 김치볶음밥 요청

주방(리포지터리)에서 요리를해서 종업원(서버)에게 전달.

종업원(서버)는 손님(클라이언트)에게 김치볶음밥 전달.

종업원은 영어로도 서버다. Server..
:p

0개의 댓글