JPA로 쇼핑몰 도메인 모델링 설계한 프로젝트 경험 서술
스프링 기반 미니 쇼핑몰 프로젝트에서 JPA를 사용해 도메인 모델링을 처음 본격적으로 해봤습니다. 접근 방식은 도메인 중심으로 엔티티를 먼저 설계하고, 그 다음에 관계 매핑을 잡는 순서로 진행했습니다. Order, OrderItem, Product, Member 같은 핵심 도메인을 먼저 정의하고, `@OneToMany`, `@ManyToOne` 관계를 설정하면서 지연 로딩과 즉시 로딩의 차이를 직접 체험했습니다. 가장 어려웠던 건 N+1 문제였습니다. 주문 목록을 조회할 때 주문마다 개별 쿼리가 나가는 걸 처음에는 인지하지 못했고, 로그를 보고 나서야 fetch join이 필요하다는 걸 알았습니다. 도구로는 Spring Data JPA + QueryDSL을 함께 사용했는데, 복잡한 조건 쿼리에서 QueryDSL이 훨씬 가독성이 좋았습니다. 이 경험을 통해 ORM은 SQL을 덜 쓰는 게 목적이 아니라 도메인 논리를 명확히 표현하는 도구라는 걸 배웠습니다.