JPA
엔터티 설계 주의사항
Lahezy
2023. 2. 27. 16:43
728x90
- 엔터티에는 가급적 Setter를 사용하지 말자
- 모든 연관관계는 지연로딩으로 설정하자(실무에서 모든 연관관계는 지연로딩(lazy)해줘야 한다.)
- @ManyToOne, @OneToMany (@ManyToOne-> eager이 default, one to many -> lazy default 이기 때문에 주의)
- X to Many는 lazy 가 기본이어서 그냥 두면 되지만, 그 경우가 아니면 (EX. @Many to One) lazy로 변경해야 함
//fetch = FetchType.LAZY
@OneToOne(fetch = LAZY)
@ManyToOne(fetch = LAZY)
- 컬렉션은 필드에서 초기화한다.
- 테이블 이름 생성 전략
- 카멜 케이스 ➡️ 언더스코어(memberPoint ➡️ member_point)
- .(점) ➡️ _(언더스코어)
- 대문자 ➡️ 소문자
1. 논리명 : 칼럼, 테이블 명을 명시적으로 적지 않으면 논리명 적용(implicit-strategy), 직접 적지 않는 경우
org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
2. 물리명 : 모든 논리명에 적용된다. 실제 테이블에 적용(회사 룰로 바꿀 수 있음)
spring.jpa.hibernate.naming.implicit-strategy:
- Cascade Type.All 전파해서 같이 삭제되고 저장된다.
@OneToOne(fetch = LAZY, cascade = CascadeType.ALL)
- 연관관계
//====연관관계 메서드==//
public void setMember(Member member){
this.member = member;
member.getOrders().add(this);
}
public void addOrderItem(OrderItem orderItem){
orderItems.add(orderItem);
orderItem.setOrder(this);
}
public void setDelivery(Delivery delivery){
this.delivery=delivery;
delivery.setOrder(this);
}
[출처]
[인프런] 실전! 스프링 부트와 JPA 활용 1 - 웹 애플리케이션 개발
실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 강의
실무에 가까운 예제로, 스프링 부트와 JPA를 활용해서 웹 애플리케이션을 설계하고 개발합니다. 이 과정을 통해 스프링 부트와 JPA를 실무에서 어떻게 활용해야 하는지 이해할 수 있습니다., - 강
www.inflearn.com
728x90