fetch join시 alias를 사용할때 문제점
1120
작성한 질문수 44
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의 상태의 일관성이 깨질때 어떤 문제가 발생할수 있는지)
답변주시면 감사드리겠습니다.
답변 1
벌크연산에서 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





