POEAA : 객체-관계형 구조 패턴 (1)

식별자 필드(Identity Field)

인메모리 객체와 데이터베이스 행 간의 식별자를 유지 관리하기 위해 데이터베이스 ID 필드를 저장하는 객체

고려사항

  1. DB 키 선택
    1. 자연키 or 대리키
    2. 단일키 or 복합키
    3. 키의 형식 : 정수 or 문자열
  2. 객체 식별자 필드
    1. 형식 일치 필드(정수키 = 정수필드)
    2. 키클래스(복합키)
  3. 새로운 키 생성
    1. DB 자동 생성
    2. GUID(Globally Unique IDentifier) : 해시코드
    3. 직접 키 생성
      1. SELECT MAX(IS_NULL(seq, 0)) + 1 FROM TABLE
      2. 키 테이블

외래 키 매핑

객체 간 연결과 테이블 간 외래 키 참조의 매핑

외래 키 매핑

고려사항

삭제 및 삽입

  • 데이터 변경 일관성 유지
  • all delete and insert
  • diff : 변경 부분만 반영

역참조 추가

  • 양방향 객체 관계 설정

컬렉션 차이

  • 1:N or N:1 or N:M

연관 테이블 매핑

N:M

연관 테이블 매핑

의존 매핑

한 클래스가 자식 클래스의 데이터베이스 매핑을 수행하게 한다.

의존 매핑

예를들어

앨범의 트랙은 해당 트랙이 속한 앨법이 로드되거나 저장될 때마다 함께 로드되거나 저장될 수 있다. 데이터베이스의 다른 테이블에서 참조되지 않는 경우. 앨범 매퍼가 트랙에 대한 매핑까지 처리하게 되면 매핑 절차를 간소화 할 수 있다. 이 매핑을 의존 매핑(Dependent Mapping) 이라고 한다.

DB기준으로 의존자는 복합키(소유자 키 일부포함)이면 더 구현에 유리하다.

UML에서 소유자(앨범)와 해당 의존자(트랙) 간의 관계는 합성(Composition)으로 표시하는 것이 적합하다.

요건

  • 의존자의 소유자는 정확히 하나여야 한다.
  • 의존자의 소유자를 제외하고 다른 객체로부터의 참조가 없어야 한다.

DDD에서 집합체(Aggregate)가 일부 연상된다.

MJ

MJ
Backend 개발자 사람입니다. 어플리케이션의 복잡성을 다루는 DDD에 관심이 많습니다. 어제보다 더 나은 개발자가 되려고 항상 노력합니다.

spring boot 2.4.x 에서 openfeign + hystrix 통합하기

spring-boot 2.4.x spring-cloud 2020.x 의존성 상황에서 feign.hystrix.enabled=true가 안됨`feign.circuitbreaker.enabled=true` 로 바꿔보지만 openfeign과 hystr...… Continue reading

IDDD 14장. 애플리케이션

Published on June 19, 2018