프록시 사용의 필요성
243
작성한 질문수 24
안녕하세요 !
이번 강의를 들으면서 프록시의 필요성에 대해서 인지를 못하겠는데요 ㅠㅠ 강사님이 작성한 메서드처럼 구분하면 되는거 아닌가요..?
member의 username을 알고 싶다면 printMember메서드를 사용하면 될것이고,
멤버와 팀에 대한 정보를 얻고 싶다면
printMemberAndTeam 메서드와 같이 만들어서 사용하면 될텐데... 어떤게 낭비라는건지 잘 이해가 되지 않습니다 ㅠㅠ
답변 1
5
안녕하세요. 님, 공식 서포터즈 David입니다.
.
강의 내용을 가지고 예를 들어보겠습니다.
Member는 Team과 연관관계를 가집니다.
프록시를 사용하지 않아서 지연로딩을 사용할 수 없다면 Member를 JPA를 통해 조회할 때 연관관계인 Team까지 함께 조회됩니다.
이게 문제가 되는 이유는 Member를 조회해서 어떤 로직을 처리하려는데 Team과 전혀 관련없는 일을 할 때 발생합니다.
나는 Member만 필요한데 연관관계인 Team까지 다 불러와서 메모리에 올라와있는 것입니다.
만약 프록시를 사용하여 지연로딩이 가능해진다면 얘기는 달라집니다.
Member를 조회할 때 연관관계인 Team은 지연로딩으로 처리된다면, Member를 조회하고 Team과 전혀 관련없는 로직을 처리할 때 오로지 Team을 제외한 Member의 상태만으로 로직을 처리하게 됩니다.
이 과정에서 불필요한 Team을 불러오지 않게 되는 것이고 리소스의 낭비를 조금이라도 줄일 수 있게 되는 것이죠.
이러한 지연로딩이라는 기술을 가능케 하는게 프록시이고요.
.
감사합니다.
0
프록시를 사용하지 않아서 지연로딩을 사용할 수 없다면 Member를 JPA를 통해 조회할 때 연관관계인 Member까지 함께 조회됩니다.
=> Member를 JPA를 통해 조회할 때 연관관계인 Team까지 함께 조회한다는 건데 오타이신거 맞으시죠..!?
이런 관계를 지연로딩의 반대 즉시로딩이라고 하는거 맞나요?
벌크연산에서 member.getAge 호출 시 영속성 컨텍스트에서 데이터를 가져오는건가요?
0
55
2
inheritance startegy 선택시 고려사항
0
36
1
Entity 동등성 비교
0
38
1
실무 조언 관련 질문입니다.
0
65
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





