본문 바로가기

CS 잡지식

[1:다]에서의 [데이터 중복] 문제를 직관적으로 이해하기

이게 보통 헷갈리는 것이 아니다. 

고로, 앞으로는 헷갈리지 않게 아래를 충분히 숙지를 해두고, [1:다] 혹은 객체 안에 컬렉션이 있는 경우

어떻게 [데이터 중복] 문제가 발생하는지 바로 바로 떠올릴 수 있게 하자. 

@Entity

class Team{

@Id@GeneratedValue

private id;

 

// 이것이 [1:다] 관계를 만든다

@OneToMany

List<Member> members;

}

JPQL : "SELECT t FROM Team t"

-> DB Table에는 Team Table, Member Table이 있어서,

JOIN 연산을 한다. 

팀A에 대해서 Member Table에는 2개의 Member(memberA,memberB라고 하자)가 존재한다.

그럼, DB 사이드에서는 2개의 ROW가 발생을 한다.

그게 애플리케이션으로 반환을 하게 되면, 아래와 같은 참조 관계가 생긴다.

Stack영역의 [참조변수 값 2개]가 1개의 팀A 객체를 가리키며, 그 팀A 객체는 <[memberA,memberB[>가 포함된

List를 가리키고 있다.  

-> 이 참조변수 값 2개를 보고, [데이터 뻥튀기], [데이터 중복]이라고 부른다.