패러다임의 불일치

객체 모델과 관계형 데이터베이스 모델은 지향하는 페러다임이 서로 다르다.
페러다임의 불일치 문제를 해결하기 위한 결과물이 ‘JPA’ 이다.
객체 모델과 관계형 데이터베이스 모델의 페러다임 차이를 비교해보자.

Granularity (밀도)

  • 객체
    • 다양한 크기의 객체
    • 커스텀한 타입
  • 릴레이션
    • 테이블
    • 기본 데이터 타입 (UDT는 비추)

Subtype

  • 객체
    • 상속 구조
    • 다형성
  • 릴레이션
    • 테이블 상속 無 (상속 기능을 구현했다 하더라도 표준 기술이 아닙니다.)
    • 다형적인 관계 無

Identity

  • 객체
    • 레퍼런스 동일성 (==)
    • 인스턴스 동일성 (equals() 메소드)
  • 릴레이션
    • 주키 (primary key)

Association

  • 객체
    • 객체 레퍼런스로 관계 표현
    • 방향이 존재
    • 다대다 관계 가능
  • 릴레이션
    • Foreign Key 로 관계 표현
    • 방향이라는 의미가 無
    • 다대다 관계 불가능. (조인 테이블 또는 링크 테이블을 사용해서 두개의 1대다 관계로 풀어야 )

Data Navigation

  • 객체
    • 레퍼런스를 이용해 다른 객체로 이동 가능
    • 콜렉션 순회 가능
  • 릴레이션
    • SQL 을 직접 다루면 처음 실행하는 SQL 에 따라 객체 그래프를 어디까지 탐색할 수 있는지 정해진다.
      이것은 큰 제약이다. 왜냐하면, 비즈니스 로직에 따라 사용하는 객체 그래프가 다르므로 언제 끊어질지 모를 개체 그래프를 함부로 탐색할 수 없기 때문이다.
    • 데이터베이스에 요청을 적게 할 수록 성능이 좋아, join 을 쓴다.
    • 너무 많이 한 번에 가져오려고 해도 문제이다.

Comments