1. ORM
Object Relational Mapping (객체-관계 매핑)
객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
- 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다.
- 객체 모델과 관계형 모델 간에 불일치가 존재한다.
- ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.
데이터베이스 데이터 <—매핑—> Object 필드
- 객체를 통해 간접적으로 데이터베이스 데이터를 다룬다.
Persistant API라고도 할 수 있다. Ex) JPA, Hibernate 등
ORM 장단점
* 장점
- 객체 지향적인 코드로 인해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 도와준다.
- 재사용 및 유지보수의 편리성이 증가한다.
- DBMS에 대한 종속성이 줄어든다.
* 단점
- 완벽한 ORM으로만 서비스를 구현하기가 어렵다.
- 프로시저가 많은 시스템에선 ORM의 객체 지향적인 장점을 활용하기 어렵다.
2. SQL
SQL은 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리 및 처리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 질의(Query) 언어라고 불리기도 한다. 관계형 데이터 베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터 베이스 객체 접근 조정 관리를 위해 고안되었다. MySQL, MariaDB, MSSQL, 오라클 등의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택하고 있다.
SQL의 언어적 특성
앞서 SQL의 정의와 데이터베이스가 SQL을 이해하는 방식에 대해서 알아봤다. 두번째로는 SQL의 언어적 특성에 대해 자세히 알아보겠다.
- SQL은 기본적으로 대소문자를 구분하지 않지만, 서버 환경이나 DBMS 종류에 따라 데이터베이스 또는 필드명에 대해 대소문자를 구분하기도 한다.
- SQL 명령은 반드시 세미콜론(;)으로 끝나야 한다.
- 고유값은 따옴표(")로 감싸준다.
- SQL에서 객체를 나타낼 땐 백틱(` `)으로 감싸준다.
3. MVC
* Model
Model은 Data와 애플리케이션이 무엇을 할 것인지를 정의하는 부분으로 내부 비즈니스 로직을 처리하기 위한 역할을 한다. 즉, 모델은 컨트롤러가 호출을 하면 DB와 연동하여 사용자의 입출력 데이터를 다루는 일과 같은 데이터와 연관된 비즈니스 로직을 처리하는 역할을 한다. 데이터 추출, 저장, 삭제, 업데이트 등의 역할을 수행한다.
Model은 다음과 같은 규칙을 갖고 있다.
- 사용자가 편집하기를 원하는 모든 데이터를 가지고 있어야 한다.
- View나 Controller에 대헤서 어떤 정보도 알지 말아야 한다.
- 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
* View
- View는 사용자에게 보여주는 화면(UI)이 해당된다.
- 사용자와 상호작용을 하며 컨트롤러로부터 받은 모델의 결과값을 사용자에게 화면으로 출력하는 일을 한다.
- MVC에서는 여러개의 View가 존재할 수 있다.
- Model에서 받은 데이터는 별도로 저장하지 않는다.
- View는 다음과 같은 규칙을 갖고 있다.
- Model이 가지고 있는 정보를 따로 저장해서는 안된다.
Model이나 Controller와 같이 다른 구성요소들을 몰라야 한다.
변경이 일어나면 변경 통지에 대한 처리방법을 구현해야만 한다.
Model과 View는 서로의 존재를 몰라야 한다.
* Controller
- Controller는 Model과 View 사이를 이어주는 인터페이스 역할을 한다.
- 즉, Model이 데이터를 어떻게 처리할지 알려주는 역할을 한다.
- 사용자로부터 View에 요청이 있으면 Controller는 해당 업무를 수행하는 Model을 호출하고 Model이 업무를 모두 수행하면 다시 결과를 View에 전달하는 역할을 한다.
Controller는 다음과 같은 규칙을 갖고 있다.
- Model이나 View에 대해서 알고 있어야 한다.
- Model이나 View의 변경을 모니터링 해야 한다.
'etc > Weekend, I Learned' 카테고리의 다른 글
항해99 8주차 WIL(github action & docker 자동배포 트러블슈팅) (0) | 2022.11.15 |
---|---|
항해99 7주차 WIL(github action & docker를 이용한 자동 배포) (0) | 2022.11.08 |
항해99 5주차 WIL(CORS) (0) | 2022.10.24 |
항해99 3주차 WIL(DI란 무엇인가?) (0) | 2022.10.10 |
항해99 1주차 WIL(Json Web Token) (0) | 2022.09.26 |