애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다. UI(view)와 비즈니스 로직(controller), 그리고 모델(model)을 분리하고 각자의 역할에 집중할 수 있게끔하여 개발을 하고 그렇게 애플리케이션을 만든다면, 유지보수성, 애플리케이션의 확장성, 유연성이 증가하고, 중복코딩 문제를 해결할 수 있습니다.
model은 그 자체가 데이터를 보유할 수도 있고, db와 연결되어 데이터를 가져올 수 있다. 데이터의 흐름은 controller에서 요청이 오면 model은 db에서 데이터를 취한 후 controller에 넘겨준다.
view는 사용자가 보는 화면을(html,css..) 제공해준다, view는 controller와 상호작용하며 controller가 model로 받은 데이터를 view에게 전달해준다. 이때 view는 data를 시각화하여 사용자에게 넘겨준다.
Controller는 view에게 받은 action, event의 input값을 받고, 이 값들을 가공하여 model에게 전해줍니다.
또 contoller는 model에게 전달 받은 데이터를 가공하여 view에게 전달합니다.
orm이란 객체와db의 테이블이 매핑을 이루느 ㄴ것을 말한다. 즉, 객체가 테이블이 되도록 매핑 시켜주는 것이다. orm을 사용하면 SQL query가 아닌 메서드로 데이터를 조작할 수 있으며, 이는 조금 더 직관적인 코드를 이룬다.
그렇다면 우리가 말하는 JPA는 무엇인가? JPA는 자바 ORM 기술에 대한 API표준을 의미한다. 즉, JPA는 ORM을 사용하기 위한 인터페이스이다.