본문 바로가기

Backend/SpringBoot

스프링부트의 디렉토리(패키지) 구조와 역할

스프링부트의 디렉토리(패키지) 구조와 역할

프로젝트마다 디렉토리(패키지) 이름은 변경되거나 추가될 수 있습니다.

처음 스프링부트를 공부할 때, 무작정 게시판 만들기를 따라했다.

하지만 MVC 패턴에 대해 제대로 알지 못했던 나는 너무나도 생소한 패키지 이름들에 이해가 하나도 안 갔었다.

그 기억을 되살려 간단하게 정리해보려고 한다.

Model… Repository… Service… 다 처음 듣는 이름의 디렉토리들이였다.

물론 패키지 이름은 딱 이거다!라고 정해진 게 아니라서 이름이 제각각이지만, 결국 하는 역할은 비슷하다.

이름은 가장 자주 듣는다고 생각하는 패키지 이름으로 써놓았지만 위에서도 말했듯이 절대 절대적이지 않다.

각 패키지가 하는 일

  • Model(또는 Domain 또는 Post … )

    • 테이블의 필드가 DB에서 매핑하는 역할을 담당한다.
    • DTO가 들어있다.

주로 이런 역할을 하며, 나 같은 경우에는 Entity 클래스를 이곳에서 만든다.

  • Repositroy(또는 Persistance)

    • 데이터베이스가 연결되는 레파지토리(DAO)

나 같은 경우에는 JPA를 사용하기 때문에 여기에서 주로 JpaRepository를 이곳에서 상속받는다.

  • Service

    • 비즈니스 로직이 들어가는 부분(메소드 같은)

주로 기능을 수행하는 메소드를 이곳에 넣는다.

실제 동작하는 로직이 들어간다.

  • Controller(또는 web)
    • 컨트롤러가 붙어있다.
    • 사용자에게 입력을 받고 돌려주는 역할을 한다.

실제로 사용자에게 입력을 받고 처리하는 역할이 들어간다.


이외에도 필요한 경우, 추가하지만 기본적으로 이 4개를 베이스로 깔고 간다.

DTO, DAO의 개념을 잘 모른다면

DAO / VO / DTO란?

를 참고하면 좋을 것 같다.