1. ORM
Object Relational Mapping의 줄임말로 객체 관계 매핑을 의미한다. 자바와 같은 객체지향 언어에서 의미하는 객체와 RDB(관계형데이터베이스)의 테이블을 자동으로 매핑하는 방법이다. 클래스는 데이터베이스의 테이블과 매핑하기 위해 생성된 것이 아니기 때문에 RDB테이블과 불일치를 해결하는 역할이 ORM이다.
2. ORM의 장점
- ORM을 사용하면서 데이터베이스 쿼리를 객체지향적으로 조작할 수 있다.
- 쿼리문을 작성하는 양이 현저히 줄어 개발 비용이 줄어듦
- 객체지향적으로 데이터베이스에 접근할 수 있어 코드의 가독성을 높임
- 재사용 및 유지보수가 편함
- ORM을 통해 매핑된 객체는 모두 독립적으로 작성되어 있어 재사용이 용이
- 객체들은 각 클래스로 나뉘어 있어 유지보수가 수월
- 데이터베이스에 대한 종속성이 줄어듦
- ORM을 통해 자동 생성된 SQL문은 객체를 기반으로 데이터베이스 테이블을 관리하기 때문에 데이터베이스에 종속적이지 않다.
- 데이터베이스를 교체하는 상황에서도 비교적 적은 리스크를 부담한다.
3. ORM의 단점
- ORM만으로 온전한 서비스를 구현하기에는 한계가 있다.
- 복잡한 서비스의 경우 쿼리없이 코드만으로 구현하기 어렵다.
- 복잡한 서비스를 코드만으로 구현하였을 때 속도 저하 등의 성능 문제가 발생
- 애플리케이션의 객체 관점과 데이터베이스의 관계 관점의 불일치가 발생
- 세분성: ORM의 자동 설계 방법에 따라 데이터테이스에 있는 테이블의 수와 애플리케이션의 엔티티 클래스의 수가 다른 경우가 생긴다.(클래스가 테이블의 수보다 많아질 수 있다.)
- 상속성: RDBMS에는 상속이라는 개념이 없다.
- 식별성: RDBMS는 기본키로 동일성을 정의하지만 자바는 두 객체의 값이 같아도 다르다고 판단할 수 있다.
- 연관성: 객체지향 언어는 객체를 참조, RDBMS는 외래키를 사용하여 연관성을 표현한다. 객체를 참조할 땐 방향성이 존재하지만 RDBMS에서 외래키를 삽입하는 것은 양방향의 관계를 가져 방향성이 없다.
- 탐색: 자바에서 특정 값에 접근하기 위해 객체 참조 같은 연결 수단을 활용하지만 RDBMS에서는 조인을 통해 여러 테이블을 연결한다.
참고 문헌: 스프링 부트 핵심 가이드(스프링 부트를 활용한 애플리케이션 개발 실무)
https://javabydeveloper.com/orm-object-relational-mapping/
http://www.yes24.com/Product/Goods/110142898
스프링 부트 핵심 가이드 - YES24
입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고,
www.yes24.com
'Back-end > Springboot' 카테고리의 다른 글
[SpringBoot] 데이터 베이스 연동(Maria DB) (0) | 2023.05.04 |
---|---|
[SpringBoot] JPA & 영속성 컨텍스트 (0) | 2023.05.04 |
[SpringBoot] 로그백(Logback) (2) | 2023.05.04 |
[SpringBoot] 스웨거(Swagger) (0) | 2023.05.04 |
[SpringBoot] DELETE API 만들기 (0) | 2023.05.03 |