Model View Controller 의 약자이다. 서비스가 작동하는 방법에 대한 아이디어, 디자인, 패턴을 일컫는다. 각 파트를 나누기 위해 MVC 패턴 사용 코드 가독성이 좋아지며 유지보수에 용이하다.
Model : 데이터와 비즈니스 로직을 관리한다.
앱이 포함해야할 데이터가 무엇인지를 정의한다. 비즈니스 로직을 처리한 후 변경사항에 대한 내용을 데이터베이스로 전달한다. 뷰와의 직접적인 교류가 있는 경우는 거의 없다.
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
- 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.
View : 레이아웃과 화면을 처리한다.
사용자에게 보여지는 부분, 즉 유저 인터페이스(UI)를 의미한다. 표시할 데이터를 모델로부터 받는다.
- 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
- 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.
- 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.
Controller : 명령을 모델과 뷰로 라우팅한다.
앱의 사용자로부터의 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함한다. 모델과 뷰는 서로에 대한 정보를 갖고 있지 않기 때문에 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지하는 역할을 한다. 즉 이벤트에 대한 처리를 담당한다.
- 모델이나 뷰에 대해서 알고 있어야 한다.
- 모델이나 뷰의 변경을 모니터링 해야 한다.
ORM(Object Relational Mapping)은 객체와 관계형 데이터베이스를 자동으로 매핑(연결)해주는 프레임워크이다. OOP(Object Oriented Programming)는 클래스를 사용하고 RDB(Relational DataBase)는 테이블을 사용한다. 여기서 객체 모델과 관계형 모델 사이에 불일치가 발생하는데, ORM은 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다. 따라서 ORM을 이용하면 따로 SQL문을 사용하지 않고도 데이터베이스를 사용할 수 있다.