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 - 웹 애플리케이션 개발
728x90
'JPA' 카테고리의 다른 글
JpaAuditing을 이용해서 base entity 생성하기 (1) | 2023.06.24 |
---|---|
JPA에서 soft delete 쉽게 처리하기 (0) | 2023.05.12 |
JDBC, JPA, ORM (0) | 2023.04.12 |
spring boot 3 Query Dsl적용 (네이티브 쿼리 작성으로 N+1문제 해결) (0) | 2023.03.31 |
@CreationTimestamp, @PrePersist(JPA라이프 사이클 어노테이션) (0) | 2023.03.28 |
댓글