정의

객체에 영속성을 부여하기 위해, 객체와 관계형 데이터베이스의 데이터를 자동으로 맵핑해주는 것

목적 및 특징

목적

객체지향 모델과 관계형 모델의 패러다임의 불일치

특징

  1. 상속
  2. 연관관계
    1. 조인 전략: 각각 테이블로 변환
      1. DB의 부모 테이블에는 타입을 구분하는 컬럼(DTYPE) 을 추가해야 한다.
      2. 장점
        1. 테이블이 정규화 되고, 외래 키 참조 무결성 제약 조건을 활용할 수 있다.
        2. 저장 공간을 효율적으로 사용한다.
      3. 단점
        1. 조회할 때 조인을 많이 사용하므로, 쿼리가 복잡해지고 성능이 저하될 수 있다.
        2. 데이터를 등록할 때 INSERT SQL이 2번 실행된다.
    2. 단일 테이블 전략: 통합 테이블로 변환
      1. 자식들을 구분하기 위해서DB에서 구분컬럼(DTYPE)을 사용해야한다.
      2. 장점
        1. 조인이 없어서 빠르다.
        2. 조회 쿼리가 단순해진다.
      3. 단점
        1. 자식 컬럼들을 모두 nullable 하게 해야한다.
        2. 자식이 많아지면, 테이블이 커지고, 성능이 오히려 저하될 수도 있다.
  3. 객체 그래프 탐색
    1. 맵핑이 잘 되어있다면, 객체지향처럼 탐색 가능
  4. 비교하기
    1. 동일한 트랜잭션에서 조회한 Entity는 같음을 보장 (동일성 보장)

예시

장점

단점

ORM와 SQL Mapper

면접 질문