ORM이란?

ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어와 관계형 데이터베이스 간의 데이터를 매핑하고 변환하는 기술입니다. 간단히 말해, 객체와 데이터베이스 테이블 간의 변환을 자동화하여 개발자가 SQL을 직접 작성하지 않고도 데이터베이스와 상호작용할 수 있게 도와줍니다.

패러다임의 차이

  • 객체 지향 프로그래밍 (OOP) : 클래스와 객체를 기반으로 데이터를 구조화, 관리
  • 관계형 데이터베이스 (RDB) : 테이블, 행, 열을 기반으로 데이터를 저장, 관리

두 패러다임의 차이를 적절히 매핑해 주는것이 ORM의 역할이다.

필요성

  1. 생산성 향상
    • 번거로운 하드 SQL 쿼리 작성을 줄여 개발 속도, 가독성, 유지보수성 증가
  2. 객체 지향 설계와의 통합
    • 객체 지향적인 설계와 데이터베이스 설계를 자연스럽게 통합하여, 도메인 모델과 데이터베이스 모델 간의 일관성 유지
  3. 데이터베이스 독립성
    • ORM 프레임워크는 다양한 데이터베이스와 호환되므로, 특정한 데이터 베이스에 얽매이지 않고 쉽게 갈아끼울 수 있다. (데이터베이스 선택, 변경의 자유로움)

대표적인 ORM 프레임워크

  1. Hibernate
  2. JPA
  3. MyBatis

동작 방식

  1. 매핑 설정
    • 클래스와 테이블, 필드와 열 간의 매핑을 설정 파일이나 애노테이션으로 정의
  2. 객체 생성
    • 데이터베이스에서 조회한 결과를 객체로 변환
  3. 데이터 조작
    • 객체를 통해 데이터베이스의 데이터를 생성, 수정, 삭제
  4. 쿼리 생성
    • ORM 내부적으로 SQL을 생성하고 실행하여 데이터베이스와 상호작용

ORM사용 시 고려사항

  1. 성능 최적화 : N+1 문제, 불필요한 쿼리 생성 등을 주의해야 한다.
  2. 복잡한 쿼리 처리 : 모든 쿼리를 효율적으로 처리하지 못할 수 있으므로 필요한 경우 네이티브 SQL 사용
  3. 트랜잭션 관리 : 데이터의 일관성과 무결성을 유지하기 위해 적절한 트랜잭션 관리가 필요
  4. 학습 곡선 : 충분히 학습한 이후에 사용해야 사이드 이펙트를 줄일 수 있다.