#Spring Structure- Controller, Service, Domain(Model), DTO, Persistance 알아보기

2021. 8. 22. 19:06Dev/Java

Java

 

 

#Controller? Service? 그게 뭔데?

쉽게 말하면 MVC 패턴을 구현하기 위한 구조이다.

물론 하나의 컨트롤러 파일 안에 모든걸 때려박아도 작동하는데 문제는 없지만, 추후 코드의 재사용 및 리팩토링을 할 때 고통받기 싫다면 재사용성과 리팩토링을 고려하여 코드를 작성해야한다.

이 방법 중 하나가 MVC(Model / View / Controller) 패턴이 있다. MVC 모델에 관한 설명은 여러 글이 있으니 참조.

그렇다면 각각의 구조를 어떻게 구분해야 할까?

 

각 구조 구분하기

* Controller : 실제 HTTP Method를 매핑하는 부분. 여기서 헤더를 통한 인증을 진행할 수 있다. (@RestController, @RequestMapping(Get, Post, Patch, Delete, ...), @CrossOrigin)

* Service : 비즈니스 로직이 구현되는 부분. 모든 로직을 여기서 처리하므로 여기서 Domain과 Persistance를 가져와 데이터를 처리 및 가공하여 return한다. (@Service, @Transactional)

* Domain : 데이터베이스의 객체를 선언하는 부분. 데이터베이스에 선언될 Column이 각 객체의 필드변수가 된다. 이 Domain을 JPA 등을 통해 DB와 매핑한다. (@Table, @Entity, @Builder)

* DTO : Data Transfer Object의 약자로, Domain, 즉 데이터베이스 row값을 가공한다. 예를 들어 Request를 받을 때, Request에 있는 값을 통해 데이터베이스 값을 CRUD할 때, 사용한다. 불필요한 값을 제외하고 return할 수 있고, 필요한 값만 받아서 데이터베이스를 CRUD할 수 있다. DTO는 Domain과 짝꿍? 인 느낌. (@Getter, @Setter, of 함수)

* Persistance : DB와 매핑된 Domain의 쿼리를 생성할 수 있다. (interface, extends JpaRepositoty)

 

MVC?

Model은  Domain, DTO가 된다.

Controller는 Controller와 Service가 된다.

View는 프론트엔드가 된다.

'Dev > Java' 카테고리의 다른 글

JAVA : Stream?  (0) 2021.08.31
Java Annotation  (0) 2021.06.28
Abstract Class , Interface  (0) 2021.06.26
Java의 기본 개념 정리  (0) 2021.06.26