이번주 WIL 키워드

- ORM

- SQL
- MVC

 

ORM

ORM이란 Object Relational Mapping(객체-관계 매핑)의 약자이다

 

객체와 데이터베이스의 관계를 매핑해주는 도구라고 보면 된다

 

즉 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로

매핑(연결)해주는 도구이다

 

즉 프로그래밍 언어의 객체와 관계형 데이터베이스 사이의 중재자(통역자) 역할을 한다

 

또한 MVC 패턴에서 모델을 기술하는 도구이고 객체와 모델 사이의 관계를 기술하는 도구다

 

ORM을 사용하는 이유

ORM을 이용해서데이터베이스 접근을 프로그래밍 언어의 관점에서맞출 수 있다

 

ORM을 이용해서 객체 간의 관계를 바탕으로SQL을 자동으로 생성하여 불일치를 해결한다

 

ORM을 이용해서SQL 문을 직접 작성하지 않고엔티티를 객체로 표현할 수 있다

 

ORM을 이용해서객체를 통해 간접적으로 데이터베이스를 다룬다

 

이를 통해 데이터베이스 세계와 프로그래밍 언어 사이의 개념의 간극을 줄여준다

또한 느슨하게 연결된, 테스트에 용이한 애플리케이션을 만들 수 있다

 

ORM 장점

1) 직관적인 코드 (가독성) + 비지니스 로직 집중 가능 (생산성)

ORM을 이용하면 SQL Query 가 아닌 메서드로 데이터를 조작할 수 있다

 

이로써 프로그래머가 객체 모델로 프로그래밍하는 것에 더 집중할 수 있게 도와준다

 

각종 객체에 대한 코드를 별도로 작성하기 때문에 코드 가독성을 높여준다

 

SQL의 절차적이고 순차적인 접근이 아닌 객체 지향적인 접근으로 생산성이 증가한다

 

2) 재사용 및 유지보수 편리성 증가

ORM은 디자인 패턴을 견고하게 만드는 데 유리하다

 

ORM은 독립적으로 작성되었고 해당 객체들을 재활용 할수 있기 때문이다

 

3) DBMS에 대한 종속성 저하

객체 간 관계를 바탕으로 SQL을 자동으로 생성하기 때문에

RDBMS의 데이터 구조와 프로그래밍 언어의 객체 모델 사이의 간격을 좁힌다

 

대부분의 ORM 솔루션은 DB에 종속적이지 않다

 

프로그래머는 Object에 집중하므로 DBMS를 다루는 큰 작업에도

비교적 적은 리스크와 시간만 소요할 수 있다

 

ORM 단점

완벽한 ORM 으로만 서비스를 구현하기 어려움

 

사용하기는 편리하지만 설계는 신중하게 해야한다

 

프로젝트의 복잡성이 커질 경우 난이도 또한 올라간다

 

잘못 구현된 경우 일관성이 무너지는 문제점이 생길 수 있다

 

SQL

SQLStructured Query Language(구조적 질의 언어)의 약자이다

관계형 데이터베이스 시스템(RDBMS)에서 자료를 관리 및 처리하기 위해 설계된 언어이다

 

SQL1970년대에 IBM에서 최초 개발되었으며 관계형 모델이라는

이론에서 파생된 특징을 가지고 있는데 현재 SQL의 표준으로 ANSI SQL이 정립되었다

 

DBMS 프로그램에서 ANSI SQL을 기반으로 개발된 개발 SQL을 사용하고

서로서로 근소한 차이를 가지고 있다

 

SQL 문법의 종류

DDL (Data Definition Language, 데이터 정의 언어)

각 릴레이션을 정의하기 위해 사용하는 언어이다

(CREATE, ALTER, DROP, TRUNCATE)

 

DML (Data Mainpulation Language, 데이터 조작 언어)

데이터를 추가/수정/삭제하기 위한 즉 데이터를 관리 하기 위한 언어이다

(SELECT, INSERT, UPDATE, DELETE)

 

DCL (Data Control Language, 데이터 제어 언어)

사용자 관리 및 사용자별로 릴레이션 또는 데이터를 관리하고

접근하는 권한을 다루기 위한 언어이다

(GRANT, REVOKE)

 

SQL의 언어적 특성

각 프로그래밍 언어가 가진 고유한 특성은 꼭 구별 지어 알아두어야

사용할 때 오류를 줄일 수 있다

 

1) SQL은 대소문자를 가리지 않는다

(, 서버 환경이나 DBMS 종류에 따라 데이터베이스 또는

필드명에 대해 대소문자를 구분하기도 한다)

 

2) SQL 명령은 반드시 세미콜론 ; 으로 끝나야 한다

 

3) 고유의 값은 따옴표 ‘’ 로 감싸준다

 

4) SQL에서 객체를 나타낼 때는 백틱 `` 으로 감싸준다

 

5) 주석은 일종의 도움말로 주석처리된 문장은 동작하지 않는다

한줄 주석은 문장 앞에 --를 붙여준다

여러 줄 주석은 /* */로 감싸준다

 

MVC

MVCModel, View, Controller의 약자이다

하나의 애플리케이션, 프로젝트를 구성할 때

그 구성 요소를 세가지의 역할로 구분한 패턴이다

 

controllermodel을 통해서 데이터를 가져오고 그 정보를 바탕으로

시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달 한다

 

Model

애플리케이션의 정보, 데이타를 나타낸다

데이타베이스, 처음의 정의하는 상수, 초기화값, 변수 등을 뜻한다

또한 이러한 데이터, 정보들의 가공을 책임지는 컴포넌트를 말한다

 

1) 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다

2) 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다

3) 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야만 한다

 

View

input 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타낸다

다시 말해 데이터 및 객체의 입력, 그리고 보여주는 출력을 담당한다

데이터를 기반으로 사용자들이 볼 수 있는 화면이다

 

1) 모델이 가지고 있는 정보를 따로 저장해서는 안된다

2) 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다

3) 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다

 

Controller

데이터와 사용자인터페이스 요소들을 잇는 다리 역할을 한다

즉 사용자가 데이터를 클릭하고 수정하는 것에 대한 이벤트 들을 처리하는 부분을 말 한다

 

1) 모델이나 뷰에 대해서 알고 있어야 한다

2) 모델이나 뷰의 변경을 모니터링 해야 한다

 

오늘 공부시간