천리길도 한걸음부터

엔티티 설계시 주의점 본문

김영한 강의 정리📑

엔티티 설계시 주의점

밤연양갱 2025. 4. 12. 00:59

<엔티티 설계시 주의점>

✅ 모든 연관관계는 지연로딩으로 설정!

✔ 즉시로딩(`EAGER`)은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다.
특히 JPQL을 실행할 때 N+1문제가 자주 발생한다.
N+1 쿼리가 결국에는 100번 날라간다... -> 100 + 1
✔ 실무에서 모든 연관관계는 지연로딩(`LAZY`)으로 설정해야 한다.
ex) order 조회시 member를 같이 조회하겠다..

@XToOne(@ManyToOne, @OneToOne)
-> 기본 패치가 FetchType.EAGER 즉시로딩이므로....
-> @ManyToOne(fetch = FetchType.LAZY) 이렇게 직접 지연로딩으로 설정해야 한다.
=> 개인프로젝트는 써도좋지만,,, 쓰지말기.. EAGER은??

@OneToMany
-> 기본 타입이 LAZY

em.persist(team); // DB에 저장하겠다고 선언하는 것..jpa 입장에서....

스프링 부트 신규 설정 (엔티티(필드) -> 테이블(컬럼))
1. 카멜 케이스 -> 언더스코어(memberPoint -> member_point)
2. .(점) -> _(언더스코어)
3. 대문자 -> 소문자

✅ 테이블 생성해서 매핑 바꿀때...
✔ 논리명 생성 : 테이블이나 컬럼명을 안적었을 때 어떻게 할거냐!
✔ 물리명 : 테이블 컬럼명이 적혀있든 적혀있지 않든 모든 곳에 다 적용하는거~

✅ 연관관계 편의 메소드 셋팅
✔ 양방향 연관관계 세팅하려면.... Order, Member있으면, 양쪽에 값이 다 셋팅해줘야 한다..(물론 DB에는 연관관계의 주인인 곳에만 Order 있어도 되지만..)
로직을 태울때 왔다갔다 하려면... 둘다 있어야..

 

-----------------------------------------------------------

헐..거의 블로그는 한달만이네.. 나의 한달 어디로갔나-_-!

카톡으로 온..영한님 응원메세지보고 다시 시작한드아...

ㅠㅠ욕심부려서 무리한 계획 세우지 말고, 하루하루 꾸준~히 성장해야겠다..쩝

'김영한 강의 정리📑' 카테고리의 다른 글

H2 연결 및 테이블 생성  (0) 2025.03.15
JPA와 DB설정, 동작확인  (0) 2025.03.13
H2 데이터베이스 설치  (0) 2025.03.08
View 환경설정  (0) 2025.03.08
라이브러리 살펴보기-gradle 라이브러리  (0) 2025.03.05