ORM, SQL, MVC

임소윤·2022년 8월 29일
0

WIL

목록 보기
4/5

ORM(Object-Relational Mapping)

객체(Object)와 관계형 데이터(Relational data) 를 매핑하기 위한 기술

즉, 객체가 테이블이 되도록 매핑 시켜주는 것을 말한다. 이러한 매핑이 필요한 이유는 객체 지향 언어과 관계형 데이터베이스 사이에 패러다임 불일치가 있기 때문이다. 이때 ORM이 바로 이러한 문제를 해결해 준다. ORM을 이용하면 SQL Query가 아닌 직관적인 코드(메서드)로서 데이터를 조작할 수 있다.

패러다임 불일치란?
객체 지향 프로그래밍과 관계형 데이터베이스 사이의 데이터 표현 방식이 달라서 생기는 문제를 패러다임 불일치라고 한다. 패러다임 불일치가 일어나는 이유는 애초에 이들의 목표와 동작 방식이 다르기 때문이다.

  • 객체 지향
    • 필드와 메서드 등을 묶어서 객체로 잘 만들어 사용하는 것이 목표
    • 객체 지향 프로그래밍은 추상화, 캡슐화, 정보은닉, 상속, 다형성 등 시스템의 복잡성을 제어할 수 있는 다양한 장치들을 제공
  • 관계형 데이터베이스
    • 데이터를 잘 정규화해서 보관하는 것이 목표


SQL(Structured Query Language)

SQL(구조적 질의 언어)은 관계형 데이터베이스 시스템(RDBMS)을 제어하는 컴퓨터 언어

SQL 쿼리문의 역할에 따른 3가지 분류

  • DDL(Data Definition Language, 데이터 정의어)
    DB 오브젝트를 생성, 삭제, 변경하는 역할을 하며, DB 설계 단계에서 주로 사용됨 (CREATE, DROP, ALTER...)
  • DML(Data Manipulation Language, 데이터 조작어)
    DB를 조회, 삽입, 삭제, 변경하는 역할을 하며, 관리 목적의 쿼리문 (SELECT, INSERT, UPDATE...)
  • DCL(Data Control Language, 데이터 제어어)
    사용자의 권한을 관리하는 역할 (GRANT, DENY, REVOKE...)


MVC(Model-View-Controller)

애플리케이션을 세 가지 역할로 구분한 개발 방법론

사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고 그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 된다.

모델 (Model) : 데이터를 가진 객체
데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있다.

뷰 (View) : 컨테이너
View는 클라이언트 측 기술(HTML/CSS/Javascript)들을 모아둔 컨테이너이다. 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.

컨트롤러 (Controller) : 명령수행
사용자가 접근한 URL에 따라 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터 Model을 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다.

MVC 패턴을 사용해야 하는 이유
사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 된다.

  • 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행가능
  • Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리함
  • 중복 코딩의 문제점 제거


<참고자료>
https://bio-info.tistory.com/100
https://cocoon1787.tistory.com/733

0개의 댓글