출처 : https://velog.io/@jybin96/Controller-Service-Repository-가-무엇일까
Model
어플리케이션이 무엇을 할 것인지 정의
하는 부분
-> DB와 연동하여 사용자가 입력한 데이터
나 사용자에게 출력할 데이터
를 다룹니다.
View
사용자에게 시각적
으로 보여주는 부분
Controller
Model이 데이터를 어떻게 처리할지 알려주는 역할
-> 클라이언트가 보낸 데이터가 있으면 모델을 호출하기전에 적절히 가공을 하고 모델을 호출, 이후 모델이 업무 수행을 완료하면 그결과를 가지고 View에게 전달하는 역할
서로 분리되어 각자의 역할에 집중할 수 있게끔하여 개발을 하여 유지보수성, 애플리케이션의 확장성, 유연성 증가등의 장점 부각 및 중복코딩이라는 문제점을 사라지는 효과를 가질수 있기 에 MVC 패턴을 사용
주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할
즉 사용자의 요청이 진입하는 지점이며 요청에 따라 어떤 처리를 할지 결정을 Service에 넘겨줌
@Controller -> 주로 뷰를 반환하기 위해 사용
@Controller
public class Controller{
@GetMapping("/home") //home으로 Get요청이들어오면
public String homepage(){
return "home.html"; //home.html 문자열 응답
}
}
@ResponseBody 어노테이션과 같이 사용하면 RestController와 똑같은 기능을 수행
주용도 : JSON/XML형태로 객체 데이터 반환
@RestController // JSON으로 데이터를 주고받음을 선언
public class ProductRestController {
private final ProductService productService;
private final ProductRepository productRepository;
// 등록된 전체 상품 목록 조회
@GetMapping("/api/products")
public List<Product> getProducts() {
return productRepository.findAll();
}
}
Service가 알맞은 정보를 가공하는 과정 -> 비즈니스 로직을 수행한다
Service가 비즈니스 로직을 수행하고 데이터베이스에 접근하는 DAO를 이용해서 결과값을 받아옴
DAO
: 쉽게 말해 Mysql 서버에 접근하여 SQL문을 실행할 수 있는 객체
JPA
: 매우 적은 코드로 DAO를 구현 가능하게
-> 인터페이스를 만드는 것 만으로도 Entity (@Entity)클래스에 대한 insert, Update, Delete, Select 를 실행할 수 있게 해준다