반응형
최근 면접에서 ORM을 사용해서 N+1 문제가 발생하면 ORM을 쓰지 않으면 되는거 아니냐 라는 질문을 받았다.
당시 나는 ORM기술을 적용하면 간편하다고만 알았지 구체적으로 어떤 장단점이 있는지는 알지 못했다. 그래서 이번에는 ORM기술을 사용하는 이유와 장단점에 대해 알아보려고 한다.
ORM이란?
ORM (Object-Relational Mapping)은 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스(RDB)의 테이블을 자동으로 연결(매핑)하여, 마치 객체처럼 데이터베이스를 다룰 수 있게 해주는 기술입니다. 즉, 개발자가 복잡한 SQL 쿼리를 직접 작성하지 않고도 객체 지향적인 코드로 데이터베이스를 조작할 수 있도록 도와줍니다.
그렇기 때문에 ORM은 사용하면 다음과 같은 장점이 있다.
ORM 장점
1. 생산성이 향상된다: SQL을 일일이 작성하지 않아도 돼서 개발 속도가 빨라짐
2. 유지보수가 용이하다: 코드 중심으로 DB를 다루니 가독성과 재사용성이 좋음
3. 객체 지향 프로그래밍에 적합하다: Java 같은 언어의 OOP 구조에 잘 맞음 (상속, 연관관계 등)
4. DB 종속성이 감소한다: ORM은 여러 데이터베이스를 지원하기 때문에, 다른 DB로의 전환이 쉽다.
5. 캐싱, 트랜잭션 처리 자동화: ORM이 내부적으로 캐시와 트랜잭션을 관리해줘서 성능 최적화가 쉬움
ORM 단점
1. 복잡한 쿼리 작성이 어렵다: 복잡한 JOIN, 집계, 튜닝이 필요한 쿼리는 ORM으로 표현이 어려움 → 결국 native query 써야 함
2. 성능 이슈가 발생할 수 있다: 불필요한 쿼리 발생(N+1 문제 등), 알고 쓰지 않으면 성능 저하 초래
3. 디버깅이 어렵다: SQL이 자동으로 만들어지기 때문에 문제 발생 시 디버깅이 어렵거나 늦어질 수 있음
요약
위와 같은 장단점이 있기때문에 요약해보자면 다음과 같다.
ORM을 사용하는 이유는 개발자의 편의와 생산성과 관련이 높다, 하지만 N+1문제와 같은 성능 최적화 관점에서 본다면 개선할 점이 존재한다.
반응형
'백엔드' 카테고리의 다른 글
N+1 문제란 무엇일까? (1) | 2025.03.06 |
---|---|
[Kafka] 실시간 채팅에 카프카 적용하기 (0) | 2025.02.28 |
Spring Gradle Error - Cause: zip END header not found (0) | 2024.07.18 |
JAVA (1) (0) | 2024.06.05 |