[MyoppingMall] 개발 - 1. 각 Entity 개발 하기
·
Project/Ex - MyoppingMall
이번 포스팅에서는 본격적으로 도메인 설계 단계에 들어가 보겠습니다. MyoppingMall에서 사용될 각 Entity들을 정의해 보겠습니다. 이번 포스팅의 목적은 다음과 같습니다.MyoppingMall의 핵심 도메인을 파악각 Entity의 책임을 명확히 구분Entity 간 연관관계를 어떻게 설계했는지 설명또한 각 Entity는 PROTECTED no-arg 생성자를 가지도록 설계하여 외부에서 무분별하게 생성하는 것을 막고,의미를 가지는 생성/행위 메서드를 사용하도록 유도 설계했습니다.· MyoppingMall 도메인 구성 🗂️MyoppingMall은 비교적 단순한 쇼핑몰 구조를 가지며,다음과 같은 도메인으로 구성되어 있습니다.Member(회원)Item(상품)Order(주문)OrderItem(주문 상품)..
[SpringBoot] Entity 설계 - Cascade 옵션은 언제 써야 할까
·
BackEnd/SpringBoot
· 들어가며JPA로 Entity 연관관계를 설계하다 보면다음과 같은 코드를 한 번쯤은 보게 됩니다.@OneToMany(cascade = CascadeType.ALL)private List orderItems = new ArrayList(); 처음에는 "연관된 Entity까지 한 번에 저장해 주니까 편하네?"라고 생각하고 cascade 옵션을 사용하게 됩니다. 하지만 cascade는편의 기능이 아니라, 연관된 Entity의 생명주기를 어떻게 관리할 것인지에 대한 설계 옵션입니다. 이번 글에서는 Cascade 옵션이 무엇인지,그리고 언제 사용해야 하고 언제 사용하면 안 되는지를 정리해 보겠습니다. · Cascade- Cascade란?Cascade는 부모 Entity의 상태 변화가 자식 Entity에게 전파되..
[SpringBoot] Entity 설계 - N:N 관계를 쓰면 안 되는 이유
·
BackEnd/SpringBoot
· 들어가며JPA를 처음 사용하면서 Entity 설계할 때 가장 쉽게 마주치게 되는 연관관계 중 하나가 N:N(다대다) 관계입니다. 쇼핑몰을 예시로 들 때,처음에는"회원은 여러 상품을 가질 수 있고,상품도 여러 회원과 연관될 수 있는데 N:N이 맞지 않나?"라는 생각이 자연스럽게 듭니다. JPA에서도 이를 위해 @ManyToMany를 제공하고 있기 때문에 별 의심 없이 사용하게 됩니다. 하지만 실무나 프로젝트를 진행하다 보면, N:N 관계는 거의 항상 문제가 됩니다. 이 글에서는왜 N:N 관계를 그대로 사용하면 안 되는지,그렇다면 어떻게 설계하는 게 좋은지 공부한 내용을 정리해 보겠습니다. · JPA에서의 N:N 관계JPA에서는 @ManyToMany 애노테이션을 통해 다대다 관계를 비교적 간단하게 표현할..
[SpringBoot] Entity 설계 시 생각해봐야 할것들
·
BackEnd/SpringBoot
· 들어가며개발을 공부하고, 실제로 프로젝트를 진행하다 보면항상 느끼게 되는 것이 하나 있습니다. 설계가 정말 중요하다!!! 설계가 제대로 되어 있지 않으면나중으로 갈수록 수정하기가 점점 힘들어지고,버그를 잡는 것 또한 훨씬 어려워지는 것 같습니다. 그래서 이번에는제가 공부하면서, 그리고 직접 실습해 보면서 느꼈던Entity를 설계할 때 반드시 한 번쯤 고민해 봐야 할 내용들을두고두고 다시 볼 수 있도록따로 정리해 두어야겠다고 생각했습니다. · 목차📌 Entity 설계 기본 원칙- N:N 관계를 쓰면 안 되는 이유- 연관관계의 주인과 mappedBy- 모든 연관관계는 LAZY로 시작해야 하는 이유- Cascade 옵션은 언제 써야 할까📌 Entity 상태 관리와 캡슐화- Entity에 Setter를..