▶ ORM 정의
→ ORM: Object Relation Mapping
직역) 객체 관계 매핑
→ 객체 지향 언어의 객체와 관계형 데이터베이스의 데이터를 자동으로 *매핑하여,
SQL 없이 객체처럼 DB를 다룰 수 있게 해주는 기술이다.
→ *매핑 예시
(JPA 기준)
자바 클래스 <-> DB 테이블
자바 필드 <-> DB 칼럼
▶ ORM 주요 장단점
장점
→ 복잡한 SQL 문법 없이 CRUD 작업을 직관적으로 처리할 수 있다.
→ 객체 중심으로 개발이 가능하다.
→ 유지보수가 쉽다.
단점
→ ORM이 SQL을 100% 대체할 수 없다.
( JOIN, GROUP BY 등 복잡한 쿼리 작성이 불리 )
( 특정 DBMS의 고유 기능 사용 불가 )
→ 대용량 데이터 처리 시 SQL에 비해 성능이 저하될 수 있다.
▶ ORM 유리한 사용 상황
1. 단순 CRUD 작업이 많이 필요한 경우
( 반복적인 INSERT/UPDATE/DELETE 작업을 쉽게 처리할 수 있다. )
2. 유지보수와 확장성이 중요한 경우
( 객체 중심이기에 리팩토링이 쉽다. )
3. 도메인 중심의 설계(DDD)가 필요한 경우
▶ ORM 불리한 사용 상황
1. 복잡한 SQL 쿼리가 필요한 경우 ex) JOIN, GROUP BY, 서브쿼리 등
( 비효율적이고 복잡하며 성능 저하가 발생한다. )
2. 성능 최적화가 중요한 경우
( ORM은 불필요한 쿼리 발생, N+1 문제가 발생할 수 있다. )
3. 정밀한 쿼리 제어가 필요한 경우
▶ ORM 사용 가능 프레임워크
Java - Spring Boot
Java - Jakarata EE
Python - Django
Python - FastAPI(내장 X)
JS/TS - Express.js(내장 X)
JS/TS - Nest JS
PHP - Laravel
PHP - Symfony
Ruby - Ruby on Rails
Go - Gin(내장 X)