-
[ Database ] ORM (Object-Relation Mapping )공부 !/Computer Science 2022. 4. 25. 23:37반응형
ORM
ORM 이란 Object Relational Mapping 객제 - 관계 매핑을 의미한다객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다
객체지향 프로그래밍은 클래스를 사용하고 관계형 데이터베이스는 테이블을 사용한다
객체 모델과 관계형 모델간의 불일치가 존재하게 되는데
ORM 을 통해 객체 간 관계를 바탕으로 SQL 를 자동 생성하여 불일치를 해결한다 !
ORM 장단점
장점
- 객체지향적인 코드로 직관적이고 비즈니스 로직에 집중이 가능하다
- 재사용 및 유지보수의 편리성이 증가한다
- DBMS 에 대한 종속성이 감소한다
단점
- 잘못 구현되는 경우 속도 저하 및 일관성이 무너진다
- 프로젝트의 복잡성이 높을수록 구현이 어렵다
- DBMS 의 고유 기능을 이용하기 어렵다 ( 반대로 DBMS 고유 기능을 사용하면 이식성이 저하된다 )
객체 - 관계 간의 불일치
다음과 같은 특성에서는 객체-관계 간의 불일치가 발생한다
세분성 ( Granularity )
경우에 따라서 데이터베이스에 있는 테이블 수보다 더 많은 클래스를 가진 모델이 생길 수 있다
상속성 ( Inheritance )
RDBMS 는 객체 지향 프로그래밍 언어의 특징인 상속 개념이 없다
일치 ( Identity )
RDBMS 는 기본키를 이용하여 동일성을 정의한다
하지만 자바는 객체 식별 (a == b)과 객체 동일성 (a.equals(b))을 모두 정의한다
연관성 ( Associations )
객체지향 언어는 방향성이 있는 객체의 참조(reference)를 사용하여 연관성을 나타내지만
RDBMS는 방향성이 없는 외래키(foreign key)를 이용해서 나타낸다
탐색 ( Navigation )
자바와 RDBMS 는 객체를 접근하는 방법이 다르다
자바는 그래프 형태로 하나의 연결에서 다른 연결로 이동하며 탐색하지만
RDBMS는 JOIN을 통해 원하는 대상 엔티티를 선택하는 방식으로 탐색한다
ORM 프레임워크
- JPA(Java Persistence API)
- Sequelize
- Django ORM
반응형'공부 ! > Computer Science' 카테고리의 다른 글
[ Network ] CORS (Cross Origin Resource Sharing) (0) 2022.05.05 [ Database ] Optimizer 옵티마이저 (0) 2022.04.26 [ Database ] Key 키 (0) 2022.04.25 [ Algorithm ] 피보나치수열 알고리즘 비교 (재귀, DP, 반복) (0) 2022.04.22 [ Algorithm ] Sorting Algorithm 정렬 알고리즘 (0) 2022.04.21