1. ORM(Object Relational Mapping)
이름에도 드러나듯이 객체와 관계를 매핑해주는 것으로 좀 더 풀어서 말하자면, 객체와 관계형 데이터베이스의 데이터를 연결해주는 것을 뜻한다.
객체 지향적(OOP)으로 설계된 객치와 관계형 데이터베이스의 데이터에는 불일치가 존해하는데, ORM이 객체를 중심으로 자동으로 SQL 문을 생성해 불일치를 해결해준다.
장점
- 객체지향적인 코드로 DB 조작 가능
→ 개발자가 객체 모델만 이용하여 비즈니스 로직 개발에만 집중할 수 있다
- DB에 대한 종속성 감소
→ DB를 교체할 때 코드를 변경하지 않아도 ORM이 변경된 DB에 맞게 SQL을 변경해준다
- 재사용성, 유지보수의 편리성 증가
→ 객체들을 재활용할 수 있으며, 매핑 정보가 명확해 매핑 확인에 대한 수고를 덜 수 있다
단점
- 구현상의 한계 존재
→ 프로젝트가 복잡해질수록 개발 난이도 크게 증가
→ 잘못된 구현으로 성능 저하 혹은 일관성이 무너지는 문제 발생
2. SQL(Structured Query Language)
SQL은 관계형 테이터베이스 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다.
일반적인 프로그래밍 언어돠 달리 데이터베이스가 이해할 수 있는 질의(Query) 언어이기 때문에 명령문이 짧고 간결하다는 특징이 있다.
DDL(데이터 정의어)
- 데이터 생성, 테이블 생성, 컴럼 생성, PK 생성 등 오브젝트를 정의할 때 사용
- CREATE, DROP, ALTER, ...
DML(데이터 조작어)
- DB에 데이터를 조회, 삭제, 삽입, 변경할 때 사용
- SELECT, INSERT, DELETE, UPDATE, ...
DCL(데이터 제어어)
- DB에 대한 접근 권한을 설정할 때 사용
- GRANT, REVOKE, DENY, ...
3. MVC 패턴
디자인 패턴 중 하나로 애플리케이션을 크게 Model, View, Controller 세 영역으로 구분하여 영역간의 결합도를 최소화해 유지보수를 쉽게 할 수 있도록 한 패턴이다.
Model
- DB와 직접적으로 상호작용하며 데이터를 처리하는 영역
- 내부 비즈니스 로직을 처리
View
- 사용자에게 보여지는 인터페이스(화면)을 담당
- Controller가 Model로부터 받은 정보를 다시 View에게 넘겨주면, Vies에서 화면을 구성해 사용자에게 보여준다
Controller
- 사용자의 입력 처리 및 흐름 관리
- Model과 View 사이의 조정역할
→ 사용자가 접근한 URL에 따라서 사용자의 요청사항 파악 후, 그 요청에 맞게 Model에 넘겨주고 처리 결과를 View에 반환
+ Repository와 Service
→ Model의 역할을 분리하여 담당
Repository
- DB와 연결되어 Query를 호출하고, DB에서 받은 데이터를 반환
Service
- 핵심 로직인 비즈니스 로직을 담당
- Controller가 전달한 요청 처리
→ DB 정보가 필요하면 Repository를 호출하여 데이터를 받아 가공한 후 Controller로 반환