인프런 커뮤니티 질문&답변

youn님의 프로필 이미지
youn

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

회원 관리 웹 애플리케이션 요구사항

MemberRepository 구현 시, findAll() 메서드 질문 드립니다.

작성

·

288

0

=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
public List<Member> findAll() {
    return new ArrayList<>(store.values());
}

store에 있는 값을 전체 조회하는 부분에서 new ArrayList<>(); 를 해주었는데
이 이유가 반환값에 컬렉션이다 보니 store.values()를 반환하게 되면
findAll() 메서드를 호출하는 곳에서 store의 데이터 조작이 가능하기 때문인게 맞을까요??

맞다면 findAll() 메서드 외에도 다른 경우에도 리턴값을 줄때 변경이 불가능하도록 new를 통해 새로운 객체를 리턴해주던지

dto와 같은 객체를 통해서 리턴을 해주어 변경에 닫혀있도록 구현해주는 것이 좋은 구현인지 궁금합니다

 

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. youn님

생각하신 것 처럼 가장 좋은 것은 모든 데이터를 복사해서 넘겨주는 것입니다.

예제에서 그 부분까지 구현하기는 너무 복잡해서 해당 부분은 생략했다고 이해하시면 됩니다.

감사합니다.

youn님의 프로필 이미지
youn
질문자

아하! 답변 감사합니다! :D

youn님의 프로필 이미지
youn

작성한 질문수

질문하기