MemberRepository 클래스의 findAll 함수 질문입니다.
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]findAll() 함수를 설명하실 때 store의 변조를 보호하기 위해 새로운 ArrayList 에 담아서 반환한다고 하셨는데, 이 말이 store.values() 를 그대로 반환하면 CallByReference로 반환되어서 외부에서 List의 값을 변경하면 store의 value도 변경된다는 말씀이신건가요??
그리고 새로운 ArrayList 에 담아서 반환해도 store 자체에 접근하면 값이 변경될 수도 있다고 하셨는데, MemberRepository 에서 store는 private로 선언되어있는데 어떻게 store 의 value 를 변경할 수 있는건지 궁금합니다.
답변 1
1
안녕하세요, truepine 님. 공식 서포터즈 y2gcoder 입니다.
findAll()함수를 설명하실 때 store의 변조를 보호하기 위해 새로운ArrayList에 담아서 반환한다고 하셨는데, 이 말이store.values()를 그대로 반환하면 CallByReference로 반환되어서 외부에서 List의 값을 변경하면 store의 value도 변경된다는 말씀이신건가요??
맞습니다. store.values()를 그대로 반환하게 되면 반환된 List 객체와 store 객체 내부의 값이 동일한 메모리 참조를 갖게 되기 때문에 외부에서 List의 값을 변경하면 store의 value도 변경되는 문제가 발생할 수 있습니다.
그리고 새로운
ArrayList에 담아서 반환해도 store 자체에 접근하면 값이 변경될 수도 있다고 하셨는데,MemberRepository에서 store는 private로 선언되어있는데 어떻게 store 의 value 를 변경할 수 있는건지 궁금합니다.
말씀하신 부분은 어디쯤인지 찾아주시면 제가 문맥을 이해하고 답변을 드리는데 더 수월할 것 같습니다. 6분 경에 말씀하신 것처럼 store에 있는 멤버 객체를 가져와서 수정하면 수정된다고 말씀하신 부분은 찾았습니다. 해당 부분에서 말씀하신 것을 예시 코드와 연관지어 말씀드려보자면, findById()로 가져온 member 객체는 store에 저장된 객체와 동일한 메모리 참조를 가지고 있기 때문에 member 객체를 수정하면 store에 있는 해당 객체의 값도 변경되어버리는 것을 말씀해주신 것 같습니다:)
감사합니다.
1
이해되었습니다! store의 member 객체를 직접 가져와서( findById() 로 가져와서) 수정하면 findAll() 을 새로운 ArrayList 에 담아서 반환한다고 해도 수정이 되는게 당연히 맞는 말인데, 제가 직접 가져온다는 말에 대한 이해가 느렸네요. 감사합니다!
servlet과 container에 대한 질문입니다
0
25
1
api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?
0
64
1
jsp 의존성 수정 요청
0
80
2
요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?
0
143
1
save() 메서드 문의
0
67
1
절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상
0
101
1
request-body-json
0
83
2
MVC 패턴의 적용 단위
0
97
1
RequestMapping을 이용한 핸들러, 어댑터
0
119
2
save 후 결과화면
0
89
2
jsp를 이용한 view
0
97
1
application.properties에 debug 추가해도 결과가 똑같습니다.
0
178
1
수업 코드 제공 관련 문의
0
97
2
RequestMappingHandlerAdapter의 Controller 호출 과정
0
100
3
파일 오픈 시
0
70
1
스프링 배치 관련
0
78
1
@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부
0
112
1
postman으로 /request-body-json-v1 호출시 500 error
0
96
1
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
0
79
1
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
0
111
1
console log 출력 관련 질문입니다.
0
75
1
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
0
139
1
html 변경하는 부분 적용 문제
0
103
1
한글 깨짐
0
77
2





