작성
·
267
1
영한님께서 컬렉션을 처음에 만들어두고 바꾸지 말라고 하신 뜻이 컬렉션의 종류를 바꾸지 말라고 하신건가요..?
아니면 컬렉션의 값을 처음에 생성할 때 한 번 만들어두고 그 다음에 건드리지 말라고 하신건가요?
답변 1
3
안녕하세요, 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);
}
감사합니다.
감사합니다!