해결됨
자바 ORM 표준 JPA 프로그래밍 - 기본편
getReference 사용시 쿼리 관련
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 강사님. 강의 수강 중에 질문 드려봅니다. 섹션9. 프록시 1편 11분경에, 코드를 그대로 따라 치고 실행해보았는데, 실제로 강의와 다르게 동작하는 거 같습니다.try {
Member member = new Member();
member.setUsername("hello");
em.persist(member);
em.flush();
em.clear();
Member findMember = em.getReference(Member.class, member.getId());
System.out.println("findMember.id = " + findMember.getId());
System.out.println("findMember.username = " + findMember.getUsername());
tx.commit();
} catch (Exception e) {
tx.rollback();
} finally {
em.close();
}위와 같이 코드를 실행했는데요, Hibernate:
select
next value for Member_SEQ
Hibernate:
/* insert for
hellojpa.Member */insert
into
Member (USERNAME, MEMBER_ID)
values
(?, ?)
Hibernate:
select
m1_0.MEMBER_ID,
t1_0.TEAM_ID,
t1_0.name,
m1_0.USERNAME
from
Member m1_0
left join
Team t1_0
on t1_0.TEAM_ID=m1_0.TEAM_ID
where
m1_0.MEMBER_ID=?
findMember.id = 1
findMember.username = hello콘솔에서는 이렇게 나옵니다. findMember.id는 쿼리 실행 필요 없이 바로 출력 가능해야 할 거 같은데 쿼리가 먼저 실행되는 이유가 뭘까요?(username을 꺼내쓰는 부분을 제거하고 실행해봐도 쿼리가 실행되고 id를 출력합니다.)