Spring JPA [활용] Entity 설계시 주의점

신재원·2023년 1월 16일
1

Spring JPA 활용

목록 보기
3/18

Entity에는 가급적 Setter를 사용하지 말자

  • Setter가 모두 열려있다 == 변경 포인트가 너무많아서, "유지보수"가 힘들다

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

  • 즉시로딩("EAGER")은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다.
  • 실무에서 모든 연관관계는 지연로딩("LAZY")로 설정해야 한다.
  • !! (중요) @OneToMany는 default값이 "LAZY" 이지만, @ManyToOne, @OneToOne은 "EAGER"임으로 "직접" LAZY로 다 바꿔 줘야된다.
    • @ X To One 시리즈는 다 LAZY로 바꿔줘야된다.

컬렉션은 필드에서 초기화 하자

  • 컬렉션 (List,Map 등등)은 필드에서 바로 초기화 하는것이 안전하다.
    • 예) List<> list = new ArrayList<>();

@Cascade

  • 엔티티의 상태 변화를 전파시키는 옵션이다.
    • persist(저장), remove(삭제)의 상태를 전파시킨다.
  • OneToMany와 ManyToOne로 양방향 관계를 맺는 엔티티의 상태 변화를 전이시킬 때 사용한다.

연관관계 편의 메서드

  • "양방향 연관관계" 를 맺을 때에는, 양쪽 모두 관계를 맺어주어야한다.
  • 양쪽 모두의 관계를 맺어주는 것을 하나의 코드처럼 사용하는 것이 안전하다.

0개의 댓글