객체 지향 언어의 객체(클래스) + Relational DateBase(RDB)의 테이블 자동 매핑
1. 장점
데이터베이스 쿼리를 객체지향적으로 조작 가능
- 쿼리문 작성 양 감소 → 개발 비용 감소
- 객체지향적으로 데이터베이스에 접근 → 코드의 가독성 향상
재사용 및 유지/보수 용이
- ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어있음 → 재사용 용이
- 객체들은 각 클래스로 나뉘어있어 유지/보수 수월
데이터베이스에 대한 종속성 감소
- ORM을 통해 자동생성된 SQL문은 객체를 기반으로 데이터베이스 테이블 관리 → 데이터베이스에 종속적이지 않음
- 데이터베이스 교체 시에도 비교적 적은 리스크 부담
2. 단점
ORM만으로 온전한 서비스 구현하기 한계 있음
- 복잡한 서비스는 직접 쿼리 구현하지 않고 코드로 구현하기 어려움
- 복잡한 쿼리를 정확한 설계 없이 ORM만으로 구성 시 속도 저하 등의 성능 문제 발생 가능
애플리케이션의 객체 관점과 데이터베이스의 관계 관점의 불일치 발생
- ORM의 자동 설계 방법에 따라 데이터베이스 테이블의 수 ≠ 애플리케이션의 엔티티 클래스의 수 될 수 있음
- RDBMS에는 상속 개념 없음
- RDBMS는 primary key로 동일성 정의 vs Java는 두 객체의 값이 같아도 다른 객체로 판단 가능
- RDBMS는 foreign key로 연관성 표현, 양방향 관계인 바 방향성 없음 vs 객체 지향 언어에서는 객체 참조하여 연관성 표현, 방향성 존재
- RDBMS에서는 쿼리를 최소화하고 JOIN을 통해 여러 테이블 로드하고 값 추출하여 탐색 vs Java에서는 객체 참조 같은 연결 수단 활용해서 그래프 형태의 접근
3. References
- 스프링 부트 핵심 가이드: 스프링 부트를 활용한 애플리케이션 개발 실무(2022, 장정우)
'back-end dev > framework' 카테고리의 다른 글
component scan (0) | 2023.06.21 |
---|---|
proxy 패턴 (0) | 2023.06.14 |
빌드도구 (0) | 2022.08.02 |
Spring Boot (0) | 2022.08.02 |
[KH정보교육원] 120일차_final project 발표, 수료식 (0) | 2022.04.05 |