본문 바로가기

공부/CS 기초이론

[JAVA / Spring] Controller, Service, Repository

스프링에서는 일반적으로 MVC(Model - View -Controller) 패턴을 사용한다. 

 

 

MVC패턴을 사용함으로 사용자의 인터페이스로부터 비지니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다.

 

즉, 서로 분리되었기 때문에 각각의 역할에 집중하여 개발할 수 있음을 의미한다.

 

MVC에서의 각각의 역할은 다음과 같다.

 

Model - 어플리케이션이 어떤 일을 해야할지 정의한다. 데이터베이스와 연결하여 사용자에게 입출력하게 될 데이터를 다룬다.

View - 사용자들이 시각적으로 보는 부분이다.

Controller - 사용자들이 보는 페이지와 데이터처리 중간에서 제어자의 역할을 한다.

 

그리고 스프링에서는 하나의 주제에 하나 이상의 레파지토리, 서비스 클래스를 만들고 이를 컨트롤러에서 사용하는 방식으로 사용해오고 있다.

 

DB -> Repository -> Service -> Controller -> View

 

 

Repository, Service, Controller의 역할은 각각 다음과 같다.

 

Repository : 

데이터베이스와 연결되어 데이터를 처리하는 영역

데이터베이스의 데이터를 가져오고 저장하는데 사용. 데이터 엑세스 계층을 담당한다.

 

 

Service :

하나 이상의 레파지토리를 묶어 관리하는 목적으로 사용된다.

레파지토리와 컨트롤러 사이에서 중간 계층으로 사용한다.

 

 

Controller :

클라이언트로부터 들어오는 요청을 처리하고 , 서비스 계층에서 필요한 작업들을 수행한다.

 

 

 

위와 같은 구조로 , 각각의 계층의 책임이 분리가 되어 유지보수성과 확장성을 높일 수 있다.

 

 

 

참고 사이트 :

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

https://www.geeksforgeeks.org/difference-between-component-repository-service-and-controller-annotations-in-spring/

'공부 > CS 기초이론' 카테고리의 다른 글

[Web] REST에 대해 간단 정리  (0) 2023.04.12
[Web] HTTP Method  (0) 2023.04.11
[JAVA / Spring] Entity, DTO, VO  (0) 2023.04.05
[JAVA / Spring] DDD설계와 SQL중심설계  (0) 2023.04.05
[JAVA / Spring] DI, IOC  (0) 2023.04.04