MVC Design Pattern
MVC(Model-View-Controller)로 하나의 애플리케이션, 프로젝트를 구성할 때
그 구성 요소를 세가지의 역할로 구분한 패턴입니다.
대표되는 UI와 비즈니스 로직, 모델을 분리하여 개발하는 소프트웨어 공학의 방법론입니다.
서로 분리되어 각자의 역할에 집중할 수 있게끔 개발을 하고 애플리케이션을 만든다면,
유지보수성, 애플리케이션의 확장성, 유연성이 증가하고, 중복코딩이라는 문제점이 사라집니다.
Model - 데이터의 정보를 가지고 있거나, 데이터베이스와 연결이 되어 정보를 가지고 옴
애플리케이션의 정보, 데이터를 나타냅니다. 데이타베이스, 처음의 정의하는 상수, 초기화값, 변수 등을
뜻합니다. 또한 이러한 DATA, 정보들의 가공을 책임지는 컴포넡트를 말합니다.
모델의 속성 중 텍스트 정보가 변경이 된다면, 이벤트를 발생시켜 누군가에게 전달해야하며, 누군가 모델을 변경하도록 요청하는 이벤트를 보냈을 때 이를 수신할 수 있는 처리 방법을 구현해야 합니다. 또한 모델은 재사용 가능해야 하며
다른 인터페이스에서도 변하지 않아야합니다.
Controller - View와 Model 정보를 Model 또는 View에 주기 전 가공을 하여 전달함
데이터와 사용자인터페이스 요소들을 잇는 다리역할을 합니다.
즉, 사용자가 데이터를 클릭하고, 수정하는 것에 대한 이벤트들을 처리하는 부분을 뜻합니다.
View - 유저가 보는 화면
input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타냅니다. 다시 말해
데이터 및 객체의 입력, 그리고 보여주는 출력을 담당합니다. 데이터를 기반으로 사용자들이 볼 수 있는 화면입니다.
ORM
ORM(Object-Relational Mapping)은 바로 Model을 기술하는 도구입니다. 객체(클래스)와 관계(관계형 데이터베이스)와의 설정을 의미합니다.
이를 통해 데이터베이스 세계와 프로그래밍 언어 사이의 개념의 간극을 줄여줍니다.
객체 지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용합니다. 여기서 객체모델과 관계형 모델간에 불일치가 존재하는데 이 객체간의 관계를 바탕으로 SQL을 자동 생성하여 불일치를 해결하는 것이 ORM 입니다.
장점
1. 객체 지향적 코드로 인해 더 직관적이고 비즈니스 로직에 집중할 수 있도록 도와준다.
- CRUD을 위한 긴 SQL 문장을 작성할 필요가 없다.(쿼리작성은 필요)
- 각 객체(Model)별로 코드를 작성하여 가독성을 높여 준다.
- SQL의 절차적 접근이 아닌 객체적인 접근으로 생산성을 높여준다.
2. 재사용 및 유지보수의 편리성이 증가한다.
- 매핑 정보가 명확하여,ERD를 보는 것에 대한 의존도를 낮출 수 있다.
- ORM은 독립적으로 작성이 되어 있고 해당 객체들은 재사용이 가능하다.
3. DBMS에 대한 종속성이 줄어든다.(종속성은 프로그램 구조가 데이터 구조에 영향을 받는 것을 의미)
- 대부분의 ORM은 DB에 종속적이지 않다.
- 개발자의 Object에 집중함으로 DBMS를 교체하는 극단적인 작업에도 비교적 적은 리스크와 시간이 소요 된다.
- 종속적이지 않다는 것은 구현 방법 뿐만 아니라 많은 솔루션에서 자료형 타입까지 유효하다.
단점
1. 완벽한 ORM만으로는 구현하기 어렵다.
- 설계에는 매우 신중해야 한다.
- 프로젝트의 복잡성이 높아질 경우 난이도 또한 올라갈 수 있다.
- 잘못 구현된 경우 속도 저하 및 심함 경우 일관성이 무너지는 문제점이 생길 수 있다.
2. 프로시저가 많은 시스템에서는 ORM의 객체 지향적인 장점을 활용하기 어렵다.
- 이미 프로시저가 많은 시스템에서는 다시 객체로 바꿔야 하며, 그 과정에서 생산성 저하 혹은
리스크가 발생할 수 있다.
'Today I Learned > Database' 카테고리의 다른 글
[DataBase] 데이터베이스와 SQL (0) | 2022.04.21 |
---|---|
[Database] 인스타그램 스키마 디자인 (2) | 2022.04.08 |