inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

페치 조인 2 - 한계

fetch join시 alias를 사용할때 문제점

1120

유승현

작성한 질문수 44

0

fetch join시 1:N 관계에 있는 엔티티에대해 alias를 사용하면

문제가 될 수 있다고 하셨는데

문제가 없을거라 생각하면서 테스트해봤지만 역시나여서

어떤 상황에서 문제가 생길지 생각해봐도 잘 떠오르지 않습니다.

팀 A

멤버1 나이 20

멤버2 나이 8

팀B

멤버 1 나이 20

인 조건에서

List<Team> cond1Team = em.createQuery("select t from Team t join fetch t.members m where m.age > 10).getResultList();

List<Team> cond2Team = em.createQuery("select t from Team t join fetch t.members).getResultList();

cond1Team.setName("newTeam")

em.persist(cond1Team)

em.clear()

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

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

이렇게 하면 소속이 꼬이나?

- cond1Team하고 cond2Team에서 team들은 같은 엔터티일텐데

-cond1Team에서 이름을 바꾸면 여기에는 나이가 8살인 멤버가 포함이 안되니 소속 이름이 안바껴야 하는데 먼가 충돌이 생기나?

하면서 이대로 persiste후

 List<Team> findTeams = em.createQuery("select t from Team t join fetch t.members).getResultList();

로 조회 후 출력해봤는데 문제되는 상황은 없었습니다.

cascade나 다른 옵션때문에 문제가 생길것 같은 상황도 잘 상상이 안가서 여쭤봅니다.

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

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

등록및 삭제과 연관될때 문제가 생길것 같으면서도 잘 모르겠고,

조회만 하는경우에는 문제가 없을것 같고

저렇게 조회할 당시에는 전혀 문제가 없어보이고,

팀에 대해 변경을 가하고 저장을하더라도 다음에 조회할때는 문제가 되지 않는다 -> 저렇게 조회를 해도 큰문제는 없다.

이렇게 계속 생각이듭니다.

물론, 조회하고나서 자신이 저렇게 쿼리를 날린 것을 잊고, 사용한다면 문제가 될것같지만, 그게 아닌경우에도 문제가 있는걸까요?

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

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

다른 케이스를 생각해봐도 어떤 경우에 문제가 될 수 있는지 잘 모르겠는데

언제 문제가 생길수 있는지 힌트를 주실 수 있을까요?

(엔터티의 상태와, db의 상태의 일관성이 깨질때 어떤 문제가 발생할수 있는지)

답변주시면 감사드리겠습니다.

JPA java

답변 1

0

김영한

안녕하세요. 승현님

다음을 참고해주세요.

https://www.inflearn.com/questions/15876

감사합니다.

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

0

54

2

inheritance startegy 선택시 고려사항

0

36

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

70

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