DDD Aggregate 패턴과 OneToMany 메모리 비효율성 문제에 대한 고찰
DDD 애그리거트에서의 fetch join 처음 나는 도메인 주도 설계(DDD)의 원칙에 따라 와 을 하나의 애그리거트로 묶었다. 그리고 자연스럽게 모든 의 변경은 루트를 통해서만 일어나도록 설계했다. 이 구조 자체는 문제가 없었다. 문제는 그 이후, 성능 최적화에 대한 오해에서 비롯되었다. 💡 애그리거트 패턴이란? 애그리거트(Aggregate) 패턴은 도메인 모델에서 관련된 객체들을 하나의 일관된 단위로 묶어 관리하는 개념이다. 이 묶음의 중심에는 루트 엔티티(Aggregate Root)가 있으며, 외부에서는 반드시 루트를 통해서만 내부 구성 요소에 접근하거나 변경할 수 있다. 이렇게 함으로써 도메인의 불변 조건이나 비즈니스 규칙을 루트가 통제할 수 있게 된다. 구성 객체들은 루트 없이는 독립적으로 저장되거나 로딩될 수 없다. 애그리거트는 하나의 트랜잭션 단위를 구성하며, 변경은 항상 이 경계 내에서 일어난다. 여러 애그리거트가 서로 참조할 경우에는 실제 객체 참조 대신 식별자…