
DDD
도메인 주도 설계(Domain Driven Design)
도메인
비즈니스적 관점의 업무 영역
애그리거트
비슷한 업무 도메인들의 묶음
각 애그리거트를 대표하는 도메인을 루트 애그리거트라고 한다
가지고 있는 기능(메서드)에 따라
애그리거트 객체 매핑 규칙
모든 엔티티 객체의 상태는 애그리거트 루트를 통해서만 변경
1. 같은 도메인(에그리거트)의 참조는 내부 객체로 참조
2. 다른 도메인 1:1, 1:N은 ID로 참조(외래키 방식)
3. 다른 도메인 N:N은 중개 클래스를 만들어서 1:N로 참조,
중개클래스는 한 쪽 N의 내부객체가 되어@MappedCollection로 ID참조와 객체참조를 같이하게 된다
내부참조는 보통 필드값으로(열거형)설정해서 참조하는 경우가 많은 듯
@MappedCollection(idColumn = "", keyColumn = "")
idColumn는 외래키, keyColumn 기본키
엔티티 - SQL Insert or Update Query 메서드로 객체 변환 - DB저장
엔티티 - SQL Select Query 메서드로 DB 호출 - 조회 객채반환
Top Down & Bottom Up
Otional<from> findBy+필드명(찾는 값 where);Optional.ofNullable(member.getName()) .ifPresent(name -> findMember.setName(name));