2025/04/27 3

패키지 구조 선택 방법

여태까지 수많은 강의와 책을 봤지만, 이런 내용은 기본적이라고 취급하는지 뚜렷한 기준을 찾기 어려웠다.따라서 직접 정리해보았다.패키지의 구성요소 분류설명하기 전에, 다음 세가지 요소를 설명하도록 하겠다.모듈비즈니스 도메인 내에서 정의하는 하나의 기능 단위를 의미한다.예시ordermemberproduct레이어아키텍쳐에서 추구하는 계층 구조를 의미한다.예시domain: 비즈니스 로직을 담당하는 레이어. 도메인 모델과 도메인 서비스, 도메인 이벤트가 여기 속한다.application: 비즈니스 로직을 이용한 UseCase 를 담당하는 레이어. 대표적으로 application service, QueryRepository 계열이 있다.interface: Use Case를 직접 호출하는 레이어. 대표적으로 job ..

DDD - JDBC에서 Child Entity를 생성/수정/삭제하는 방법

사전 지식Child Entity란 무엇인가?도메인 모델 완전성과 도메인 모델 순수성JDBC로 Aggregate Root의 Repository를 설계하면서 도메인 모델 순수성을 지키려고 하다 보면, JDBC로는 도메인 모델 생성/수정/삭제 로직으로 영속성 데이터를 변경할 수 없다.우리가 JPA의 Dirty Checking 에 익숙해져있기에 눈치채지 못하지만, 일반적으로 도메인 모델이 수정되었다고 해당 사항이 즉시 반영되진 않는다.JPA는 (양방향+CascadeType.PERSIST+orphanRemoval = true의 경우) 리스트에 추가/삭제하는 것만으로 객체의 생성/삭제 로직을 자동으로 SQL 문으로 만들어 쿼리해준다.하지만, JDBC의 생성/삭제는 Dirty Checking을 통한 자동 쿼리 생성이..

Child Entity와 Value Object, DTO 간의 차이점 분석

DDD에서 객체는 id, state, operation 이 세가지를 가지고 있어야 Entity로 승격된다.사전 지식 - Entity로 인정받기 위한 3가지 요소ID다른 객체와 구분할 식별자가 필요하다.State객체가 스스로 자신의 상태를 가져야 한다.Operation객체가 스스로 행동하기 위해 정의된 규칙이 있어야 한다.지금부터 위 기초 지식을 바탕으로, Child Entity와 Value Object, DTO 세가지를 분류/분석해보자.Child Entity애그리거트 루트의 하위 엔티티 중, VO가 아닌 것.ID, State, Operation을 모두 가져야 한다.Child Entity의 경우, 외부와 직접 상호작용하는 로직 없이, 자신의 영역 내에서만 관리되는 비즈니스 로직을 가져야 한다.모든 로직이 ..