[Spring] Controller, Service, Repository 제때 사용하기!

아뵤·2024년 10월 29일
0

Algorithm/Java

목록 보기
4/5

본격적인 서버 개발 시작 전, SW 디자인 패턴에 대해 정리해 보자!

📍MVC 패턴

Model

어플리케이션의 역할을 정의하는 부분이다. 앱이 포함해야 할 데이터가 정의되어 있고, 데이터 상태 변경 시 모델을 뷰나 컨트롤러에 알린다.

+) 주로 뷰에 알려 필요 시 화면을 변경하는데, 업데이트된 뷰에 따라 로직의 수정이 필요할 시 컨트롤러에 알리게 된다.

View

사용자에게 시각적으로 보여주는 UI 부분이다. 앱의 데이터를 보여주는 방식을 정의한다.

Controller

Model의 데이터 처리 로직을 담당한다. 입력 받은 데이터를 적절히 가공해 이를 바탕으로 모델을 호출한다.

MVC 패턴의 이점

소프트웨어 디자인 패턴인 MVC를 사용함으로써 UI, 데이터 처리, 그리고 이 사이를 제어하는 컨트롤러가 단일 책임을 지며 각각 맡은 바만 수행할 수 있게 된다.

역할의 분리로 각자가 맡은 부분만 수행하면 되니 추후 애플리케이션의 유지·보수, 확장성, 유연성에 아주 유리해진다!

📍Spring에서 어떻게 활용할까?

Controller

대규모 프로젝트 시 A서비스, B서비스 등 여러 서비스를 제공할 수 있는데 이 각각의 서비스를 역할에 따라 설계하고 코딩하기 위해 Controller을 나누어 사용할 수 있다.

  • @Controlloer 은 주로 View를 반환하기 위해 사용
  • RestController@ResponseBody 어노테이션이 붙은 효과를 지녀 JSON/XML 형태의 객체 데이터 반환을 도움

Service

서비스는 비즈니스 로직을 수행하는 부분으로, 알맞은 정보를 가공하는 과정을 겪는다.
주로 RESTful API와 같은 데이터 통신 역할을 담당하며 데이터베이스에 접근하는 DAO를 이용해 결과값을 받아온다.
+) DAO : DB의 데이터에 접근해 데이터를 조작하는 객체

Repository

Entity에 의해 생성되는 DV에 접근하는 메서드를 사용하기 위한 인터페이스다.
@Entity라는 어노테이션으로 DB를 만들면 CRUD 과정을 어떻게 수행하게 할 것인지 정의해 주는 계층을 말한다.

📍Spring 폴더 구조

 ├── DemoApplication.java
 ├── config //스프링 각종 설정들로 구성
 ├── controller //사용자로부터 전달받은 요청을 처리한 후 지정된 View에 모델 객체를 넘겨줌
 ├── dto //DTO는 로직을 가지지 않는 데이터 객체, getter, setter 메소드만 가진 클래스를 의미
 ├── domain
 ├── entity // 데이터베이스에 표현할 추상적인 표현들인 속성(Attribute)가 정의
 ├── exception //Exception Guide의 역할 
 ├── error //예외 핸들링을 담당하는 클래스로 구성
 ├── model //Controller에서 생성한 데이터를 담아 View로 전달할 때 사용
 ├──repository //JPA를 담당하는 '저장소' 
 ├── service //사용자로부터 전달받은 데이터를 가공하여 처리
 └── util //유틸성 클래스들이 위치

참고

https://velog.io/@jybin96/Controller-Service-Repository-%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C
https://meojiktard.tistory.com/11

profile
헤매는 만큼 내 세상 🌟🌠

0개의 댓글