N+1 경험 → Lazy 기본 설정 → 애그리거트 경계 재설계
JPA로 도메인 모델링을 처음 할 때 DB 스키마를 그대로 엔티티로 옮기는 함정에 빠졌습니다. 외래키 관계를 전부 @OneToMany로 연결했더니 N+1 쿼리 문제가 여기저기서 터졌습니다. Lazy Loading을 기본으로 설정하고 필요한 경우만 @EntityGraph나 fetch join을 쓰는 방식으로 바꿨습니다. 도메인 경계도 처음엔 하나의 엔티티에 너무 많은 책임을 넣었는데, 애그리거트 개념을 공부한 뒤 불변식을 지키는 단위로 엔티티 경계를 나누는 방식이 더 명확하다는 걸 알게 됐습니다. ORM은 DB 접근을 편하게 만들어주지만 쿼리를 의식하지 않으면 오히려 성능 문제를 숨기는 경향이 있습니다.