inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 ORM 표준 JPA 프로그래밍 - 기본편

SQL 중심적인 개발의 문제점

33, 34, 35 pdf 페이지 관련 질문입니다!

200

mango_lover

작성한 질문수 3

1

안녕하세요 강사님 :)

 

설명하신 내용 중에 헷갈리는 부분이 있어 질문 드리고자 합니다.

 

pdf 페이지 기준으론, 33 34 35페이지에 해당하는 부분입니다! (01. JPA 소개)

 

33페이지에서 member.getOrder() 을 실행하면 null이 발생한다고 말씀하셨는데, 왜 null이 발생하는 지 잘 모르겠습니다.

제 생각으론 member class에 getOrder() 메서드가 있다는 것은, member class에 order 객체가 있다는 것으로 봐도 무방할 것 같은데

아래코드에 제가 생각한 부분을 적어놨습니다.

 

class Member {

Order order;

public Order getOrder() {

}

}

왜 null이 반환되는 것인지 잘 모르겠습니다.

 

34페이지에서 memberDAO.find()의 반환값인 member 객체를 신뢰할 수 없는 이유를 잘 모르겠습니다.

 

강사님께서 find()의 내부 동작으로 쿼리가 무엇이 날라갈 지 모르기 때문이라고 도중에 말씀하셨는데, 무엇을 의미하는 것인지 잘 모르겠습니다.

 

35페이지는 강사님께서 설명하신 내용을 이해할 수가 없습니다.

 

모든 객체를 미리 로딩할 수 없기 때문에 상황에 따라 회원 조회 메서드를 여러개 만든다고 말씀하셨는데, 

 

미리 로딩한다는 말의 의미를 모르겠고,

왜 미리 로딩할 수 없기 때문에 회원 조회 메서드를 여러개 만들어야 하는 지 잘 모르겠습니다.

 

부족한 점이 많아 질문을 많이 드려서 죄송합니다. ㅠㅠ

 

늘 감사합니다

java JPA

답변 1

3

David

안녕하세요. 이원태님, 공식 서포터즈 David입니다.

.
1. 객체를 담는 변수가 존재한다고 변수 안에 객체가 들어가 있는게 아닙니다. 아무것도 없을 수 있습니다. (null) 그 이유는 Member 테이블과 Team 테이블을 조인했기 때문입니다. Order 테이블과 조인하여야 Member 내 Order 객체를 확인했을 때 null이 안 나옵니다. 물론 특정 Member와 연관된 Order가 있어야 합니다.

2. 1번 항목과 같은 맥락입니다. find() 메서드가 내부적으로 Member를 불러올 때 Team과 Order가 함께 조인될지, Team만 조인될지 메서드 내 작성된 쿼리를 까보기 전까지 모릅니다. Member 불러오니깐 다 있겠거니 하고 Order를 getOrder했는데 내부적으로 Order를 조인하지 않았다면 null이 발생할 수 있죠.

 

3. Member를 불러올 때

Team만 조인하는 메서드

Team과 Order 둘 다 조인하는 메서드

둘 다 Member를 가져오는 메서드인데 가져오는 데이터의 수는 다릅니다.

Member를 불러올 때 그냥 다 불러오면 되지 않느냐?라고 반문하실 수 있지만 성능을 위해 필요한 것만 불러오는게 좋습니다.

 

강의를 처음 들으셔서 혼란스러우신 것 같습니다.

하나하나 이해가 안 되시더라도 강의를 쭉 듣다보면 알아지는 것들이 있으니 강의를 먼저 한 싸이클 쭉 돌려보시는 것을 추천드립니다:)

.
감사합니다.

0

mango_lover

상세한 설명 감사합니다. :)

말씀하신대로, 처음 듣는 생소한 용어들이 너무 많아 혼란스러운 상태인 것 같습니다.

조언해주신대로 한 싸이클 먼저 돌려보겠습니다.

 

벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?

0

54

2

inheritance startegy 선택시 고려사항

0

35

1

Entity 동등성 비교

0

38

1

실무 조언 관련 질문입니다.

0

64

1

H2데이터베이스 파일 생성

0

76

2

서브쿼리 강의에서 ALL 예시 관련 질문드립니다.

0

66

2

수정또는 삭제시 영속성 엔티티에 값이 무조건 있어야 하나요?

0

62

1

JPQL 메소드와 락

0

62

1

Delivery @OneToOne

0

69

1

17강 4~5분대 테이블 값 조회가 안됩니다.

0

104

2

UnsupportedOperationException 발생

0

97

3

H2 Database 연결이 안됩니다.

0

101

2

연관관계 매핑 질문드립니다.

0

93

2

h2데이터베이스 실행오류

0

114

2

persistence.xml

0

119

2

양방향 연관관계에서 연관관계의 주인(mappedBy)을 왜 꼭 정해야 하나요?

0

87

1

영속성 컨텍스트

0

74

1

JPA 프록시

0

105

1

Native Query와 MyBatis

0

81

1

영속성 컨텍스트는 어떤 메모리에 저장되는건가요?

0

97

1

임베디드 타입 예시 코드 관련 질문

0

125

3

명시적 조인에서 별칭을 주면 왜 객체에 접근할 수 있나요

0

100

3

인텔리제이 패키지 커서 단축키 질문

0

112

2

혹시 현재는 ID 데이터 타입이 String이면 안되나요?

0

151

1