인프런 커뮤니티 질문&답변

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

엔티티 설계시 주의점 질문입니다.

작성

·

127

·

수정됨

0

fetch조인문의.png1. 엔티티 설계시 주의점 10분6초에서 fetch=FetchType.LAZY 을 fetch=LAZY 로 변경하시는데요. 강의 아래화면에서 방향을 보니까 alt +endter를 누르시는데 저는 오른쪽 화면 처럼 나옵니다. 어떻게 해야하나요?

 

  1. 24분 40초에 나오는 setMember(Member member) 부분 코드 설명이 아래처럼 이해해도 되나요?

    public void setMember(Member member){
        // 현재 Order 객체의 member 필드에 매개변수로 받은 Member 객체를 할당합니다.
        this.member = member;
    
        // Member 객체의 getOrders 메서드를 호출해 주문 목록을 가져온 뒤, 현재 Order 객체(this)를 그 목록에 추가합니다.
        // 이는 Member 객체 내부의 주문 목록에도 현재 Order 객체가 포함되도록 하는 역방향 연결을 설정합니다.
        member.getOrders().add(this);
    }
    

 

3.getOrders()는 메소드로 정의된게 없는데 왜 빨간줄이 안뜨나요?

  1. 강의에서 setter 기능은 쓰지 말라고 하셨는데 setMember와 setter 는 다른 기능인가요?

  2. setMember 이 부분을 쓰는 이유가 아래 동그라미 표시가 있기 때문인가요?

 

질문1.png

답변 1

0

안녕하세요. zzzzz님, 공식 서포터즈 y2gcoder입니다.

  1. 9분 57초를 보시면 아시겠지만 강의화면에서도 zzzzz님과 똑같이 뜨고 있습니다. 바로 엔터를 쳐서 on-demand static import 를 해주시면서 빨리 넘어가느라 못보신 것 같습니다! 그 뒤로는 동일한 걸 import 하면 알아서 static import 가 됩니다!

  2. 네 그렇게 이해해주십쇼!

  3. 11분 16초에 보면 Member 엔티티 클래스가 잠깐 보입니다. 클래스 윗단을 보시면 @Getter 가 붙어있는데, 그게 클래스에 붙어있으면 모든 클래스의 필드에 대해 getter 메서드를 생성합니다. 그래서 getOrders()도 생성된 것입니다. @Getter 를 주석처리해보시면 더 확실하게 아실 수 있습니다 :)

  4. 같은 것입니다. 강의에서도 쓰지말길 권장드린다고 말씀드렸습니다! 그치만 어쩔 수 없이 사용해야 하는 곳에는 사용해도 됩니다! 여기서는 Order 객체에서 연관관계에 있는 member 를 연결해주기 위해서 사용하고 있습니다!

  5. setMember는 캡처의 회원 엔티티 분석 에서 Order의 member 필드에 세팅을 해주기 위한 메서드입니다!

 

감사합니다.

zzzzz님의 프로필 이미지
zzzzz
질문자

  1. setMember는 캡처의 회원 엔티티 분석 에서 Order의 member 필드에 세팅을 해주기 위한 메서드입니다!라면 member에서 orders를 추가하는건 어느 코드인가요?

     



제가 setter로서의 기능만 설명한 것 같습니다 죄송합니다!
setMember()는 setter기는 하나 단순히 Order의 member 필드에 세팅해주는 것 외에도 연관관계 편의 메서드로서 member 엔티티에 있는 List<Order> orders 필드에도 값을 추가하는 기능도 해주고 있습니다!
이 부분은 양방향 연관관계에 대한 이해가 있어야 하고 해당 개념은 매우 중요합니다!

영한님의 자바 ORM 표준 JPA 프로그래밍 - 기본편 강의의 섹션 5. 연관관계 매핑 기초 를 학습하시길 권해드립니다!

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

질문하기