ORM
- Object-Relational Mapping (객체와 관계형 데이터베이스 매핑)
- 객체와 DB의 테이블을 짝지어주는 것
- 객체지향을 지향하는 JAVA와의 관계형 데이터베이스 간의 문제를 해결하기 위함
- 매핑을 한 경우 쿼리 작성을 하지않고 코드로 직관적인 사용 가능
- JPA와 hibernate
SQL
- Structured Query Language(구조화 질의어)
- 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
- SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있음
- 관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다.
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.
- 데이터는 관계를 통해 여러 테이블에 분산된다.
데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다.
따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉, 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 관계형 데이터베이스의 특징 중 하나다.
또한, 데이터의 중복을 피하기 위해 '관계'를 이용한다.
- SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
- SQL 단점
- 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
- 대체로 수직적 확장만 가능함
MVC
Model, View, Controller의 약자
-
Model
- 정보(data)들의 가공을 책임지는 컴포넌트
- 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달
- 규칙
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
- 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야 한다.
-
View
- 사용자에게 보여지는 부분(User Interface)
- 모델에게 질의하여 데이터를 전달 받으며 받은 데이터를 화면에 표시해주는 역할
- 모델에게 전달받은 데이터를 별도로 저장하지 않아야 하며 사용자가 화면에 표시된 내용을 변경하게 되면 모델에게 전달하여 모델을 변경해야 한다.
- 규칙
- 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
- 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.
- 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다.
-
Controller
- 모델과 뷰 사이를 이어주는 다리 역할을 한다.
- 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지
- 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할
- 규칙
- 모델이나 뷰에 대해서 알고 있어야 한다.
- 모델이나 뷰의 변경을 모니터링 해야 한다.
-
장점
- MVC 패턴을 이용하면 유지보수가 쉬워지며 중복되는 코드를 줄일 수 있음