• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

14분대 정도에서의 설명과 관련하여 질문이 있습니다!

22.10.03 11:08 작성 조회수 229

1

영한님께서 컬렉션을 처음에 만들어두고 바꾸지 말라고 하신 뜻이 컬렉션의 종류를 바꾸지 말라고 하신건가요..?

아니면 컬렉션의 값을 처음에 생성할 때 한 번 만들어두고 그 다음에 건드리지 말라고 하신건가요?

답변 1

답변을 작성해보세요.

3

codesweaver님의 프로필

codesweaver

2022.10.03

안녕하세요, JUNN 님! 공식 서포터즈 codesweaver 입니다.

컬렉션을 참조하고 있는 멤버변수를, 다른 변수로 변경하지 못하도록 막으라는 의미입니다. 컬렉션 안에 값을 넣거나 삭제하는 것은 상관없습니다.

 

가량 다음과 같이 members 가 List<Member>를 참조하도록 생성하였습니다.

List<Member> members = new ArrayList();

 

이 상황에서 아래와같은 members 자체를 변경할 수 있는 setter를 제공하지 말라는 이야기 입니다.

public void setMember(List<Member> members) {

this.members = members;

}

List<Member> members는 하이버네이트에 의해 애플리케이션 시작 시 다른 프록시 객체로 감싸서 관리하는데, 이 때 누군가가 setter 메서드로 일반 콜렉션 재할당 하면, 하이버네이트가 정상 작동을 보증할 수 없기 때문입니다.

 

아래처럼 콜렉션을 사용하는 것은 괜찮습니다.

public void addMember(Member member) {

this.members.add(member);

}



감사합니다.

감사합니다!