질문이 조금 헷갈리는데
예를 들어서 Team 클래스랑 Member 클래스가 있다고 치면
멤버랑 팀이 다대일 관계일거 아님?
그런데 Member 클래스에서
@Column(name ="team_id")
String teamId
이런 식으로 가지고 있다가 조회하면 따로 쿼리가 안나갈거잔슴?
왜냐면 Member 테이블에 외래키로 이미 엔티티에 들어있을테니까
근데 만약
@ManyToOne
Team team
상태로 가지고 있다고 할 때 getTeam().getId() 하면 팀을 조회하는 쿼리가 한 번 더 나가냐 안나가냐가 궁금함
연관관계 매핑하면 프록시 객체로 가지고있다가 실제로 값을 참조하려고 할 때 쿼리가 나간다고 들었는데,
만약 저 상태에서 쿼리 한 번 더 나가면 손해 아닌가 해서
내가 해봤는데 연관관계 있는 객체 조회하면 joincolumn 써도 무조건 쿼리 나감 Id만 필요하면 id에 해달하는 멤버 변수 따로 하나 만들고 name 동일하게 설정한 다음 id에 해당하는 멤버는 kotlin val이나 setter 없이 쓰먼 됨
아 그렇노 고맙다
근데 왜래키랑 연관관계 객체랑 같이 갖고 있는게 안티패턴이라는 얘기를 들었는데 맞음?
한번더 나가는거 맞음 그래서 n+1 문제가 생기는거고 쿼리 안나가게 하려면 처음 멤버를 조회할때 패치조인같이 첨쿼리때 한번에 팀까지 포함해서 불러와야댐
ㄳㄳ 알아볼게
멤버를 불러오는 로직에서 팀도 자주 불러올거 같으면 페치조인으로 프록시로 안만들고 그냥 디비에서 첨부터 긁어오고 팀 자주 안 필요하면 안불러오고 가끔 쿼리 한번 더 나가게 하고