ORM(Object Relational Mapping)
- 객체-관계 매핑
- 객체 지향적(OOP)으로 설계된 객체를 구현한 클래스와
관계형 데이터베이스(RDB)에서의 테이블에는 불일치 존재
-> ORM을 통해 '객체'를 중심으로 자동으로 SQL을 생성하여 불일치 해결
장점
- 객체지향적인 코드로 데이터베이스를 조작할 수 있다
-> SQL문을 작성하면서 필요한 것들을 크게 신경쓰지 않고 DB를 사용할 수 있다- 재사용, 유지보수의 편리성이 증가한다
-> ORM은 독립적으로 작성되어 있고, 해당 객체들을 재활용 할 수 있다
-> 매핑 정보가 명확해 ERD를 자주 확인하지 않아도 된다- DB에 대한 종속성이 줄어든다
-> 특정 DB에만 사용할 수 있는 것이 아니기 때문에, DB를 교체할 때
모든 코드를 바꾸지 않아도 교체할 수 있다.
단점
- 모든 것을 ORM만을 사용하여 구현하기는 어렵다
-> 프로젝트의 복잡성이 커지면 난이도가 크게 증가한다
-> 잘못 구현한 경우 성능 저하와 일관성이 무너질 수 있다
-> 항상 내가 원하는 방식대로 동작하지 않을 수 있다
SQL(Structured Query Language)
- DBMS에서 자료를 처리 및 관리하기 위한 언어
- 일반적인 프로그래밍 언어와 달리 대화식 언어이기 때문에 명령문이 짧고 간결
쿼리문의 분류
DDL(데이터 정의어)
- DB 오브젝트를 생성, 삭제
- DB 설계단계에서 주로 사용
- CREATE, DROP, ALTER, ...
DML(데이터 조작어)
- DB에 데이터를 조회, 삭제, 삽입, 변경
- SELECT, INSERT, UPDATE, ...
DCL(데이터 제어어)
- 사용자의 권한 관리
- GRANT, DENY, REVOKE, ..
MVC(Model - View - Controller)
MVC 패턴
- 디자인 패턴중 하나로, Model, view, controller 계층으로 나누어 개발하는 방식
- 각 계층은 각자 맡은 역할이 철저히 분리되어 있고, 상호작용을 통해 정보를 교환한다
- Model
- 어플리케이션이 무엇을 할 것인지 정의하는 부분
- 내부 비즈니스 로직을 처리
- DB와 직접적으로 상호작용하여 데이터를 처리, 가공하여 Controller에게 전달
- View
- 사용자 인터페이스 요소, 즉, 화면을 담당
- controller가 model로부터 받은 정보를 다시 view에 넘겨주어 이용
- Controller
- 사용자의 입력처리와 흐름 제어
- 사용자가 접근한 URL에 따라서 사용자의 요청사항 파악 후, 그 요청에 맞게
Model에 의뢰하여 처리 결과를 View에 반환
그렇다면 Service, Repository는?
→ MVC패턴에서 model이 수행하는 역할을 분리한 것
1. Service
- 핵심 로직(비즈니스 로직)을 처리
- Controller에서 전달받은 요청을 처리하며 그 과정에서 Repository를 호출하여
정보를 받아 가공 후 Controller로 반환
2. Repository
- DB에 직접 연결되어 쿼리 호출, 결과 데이터를 반환