천리길도 한걸음부터
엔티티 설계시 주의점 본문
<엔티티 설계시 주의점>
✅ 모든 연관관계는 지연로딩으로 설정!
✔ 즉시로딩(`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 |