해결된 질문
작성
·
184
0
저어어쪽 Querydsl 강의 초반부 듣다가
갑자기 프록시에 대한 개념(지연로딩)으로 인해 생긴
mappedBy의 의문점으로 이리저리 고생 끝에
확인차 이 강의로 와서 질문 드립니다 .
@Entity
@Getter @Setter
public class TestTeam {
@Id @GeneratedValue
@Column(name="TESTTEMA_ID")
private Long id;
private String name;
@OneToMany(mappedBy = "team")
private List<TestMember> members = new ArrayList<>();
}
@Entity
@Getter @Setter
public class TestMember {
@Id @GeneratedValue
@Column(name = "TESTMEMBER_ID")
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TESTTEAM_ID")
private TestTeam team;
}
일 때,
@Test
public void test() {
TestTeam teamA = new TestTeam();
teamA.setName("teamA");
em.persist(teamA);
처럼 em.persist(teamA)를 하면
1차 캐시에
{id = 1(예시), name = "teamA", List<TestMember> members = 프록시} 로 저장되는게 아니라
{id = 1(예시), name = "teamA", List<TestMember> members = null} 로 저장되고
조회할 때 1차 캐시에,
{id = 1(예시), name = "teamA", List<TestMember> members = 프록시} 로 저장되는 거죠 ?
뭔가 풀고 나니 바보같은 질문인 것 같기도 하고..그런데
확인차 질문드립니다 :[
매번 감사합니다 . :]