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

wnsqud70님의 프로필 이미지
wnsqud70

작성한 질문수

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

조인

지연로딩

작성

·

283

0

안녕하세요 강사님
 
inner join 쿼리 만드시고 run 하셨을때 처럼 저는 Team 객체가 나오지 않고..
 
지연로딩 설정한것처럼 값이나오는데(지연로딩을 설정 안했습니다)
 
혹시 제가 설정을 잘못한건가요 아니면 이 강의가 몇년전꺼다보니 지금은 디폴트가 아예 지연로딩으로 업데이트가 된건가요,.,??

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. wnsqud70님

@ManyToOne의 기본값은 EAGER입니다.

EAGER로 설정이 되어 있네요. 다음과 같이 수정해주세요.

public class Member {

    @ManyToOne(fetch = FetchType.LAZY)

    @JoinColumn(name = "TEAM_ID")

    private Team team;

}

감사합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. wnsqud70님

JPA 스펙은 그동안 변한 내용이 없습니다. 따라서 강의 내용은 동일하다고 이해하시면 됩니다.

참고로

  • @ManyToOne은 기본이 EAGER입니다.
  • @OneToMany는 기본이 LAZY입니다.

 

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

em.clear()를 안 해서 그런거 같은데
flush()를 해도 clear()를 안 했으니 영속성 컨테스트에 데이터가 남아있어서,
DB에 들리지 않고 영속성 컨테스트에서 가져오는건가요?
(따라서 프록시 생성도 안 되고, 로딩도 안된다?가 맞나요?)

김영한님의 프로필 이미지
김영한
지식공유자

yejun_1220님 여러가지를 함께 봐야할 것 같아요.

앞서 말씀드린 것 처럼 동작하는 코드를 함께 올려주시겠어요?

em.flush() 와 em.clear()를 안하고 조회 시 select 문이 안 나갔습니다.

---------------------------------------------------------------------------------------------

 

em.flush() 와 em.clear() 를 삽입 시 select문이 출력됐습니다.

 

해당 소스 입니다
https://drive.google.com/file/d/1LtVeqRfgnXxObOaNqMhn042-IKERxK1e/view?usp=sharing
JpaMain.java에서 사용됨.

wnsqud70님의 프로필 이미지
wnsqud70

작성한 질문수

질문하기