JPA

엔터티 설계 주의사항

Lahezy 2023. 2. 27.
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)
  •  컬렉션은 필드에서 초기화한다.

 

  • 테이블 이름 생성 전략
    1. 카멜 케이스  ➡️ 언더스코어(memberPoint  ➡️ member_point)
    2. .(점) ➡️ _(언더스코어)
    3. 대문자 ➡️ 소문자

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

댓글