Whiteship's Note

6.4. 연관 관계 처리를 위한 메소드 구현.



Member와 Messenger의 연관 관계에서 만약에 어떤 Member 객체가 새로운 메신저 정보를 추가했다면 Member에 있는 messengers에 새로운 Messenger 객체가 추가 되어야 하고, 추가되는 Messenger 객체에 있는 member라는 멤버 변수는 자기 자신으로 세팅되어야 합니다.

즉 다음과 같은 두 줄의 코드가 필요합니다.
getMessengers().add(messenger);
messenger.setMember(this);
이 두줄의 코드는 항상 붙어있어야 하기 때문에 하나의 메소드로 묶어 둡니다.

삭제도 마찬자기로 다음의 두 줄의 코드가 묶여 있어야 합니다.
getMessengers().remove(messenger);
messenger.setMember(null);

위 코드들을 Member 클래스의 messenger의 게터 세터 아래에 구현해 둡니다.
    @OneToMany(mappedBy="member")
    public Set<KMessenger> getMessengers() {
        if(messengers == null) messengers = new HashSet<KMessenger>();
        return messengers;
    }
    public void setMessengers(Set<KMessenger> messengers) {
        this.messengers = messengers;
    }
    public void addMessenger(KMessenger messenger){
        getMessengers().add(messenger);
        messenger.setMember(this);
    }
    public void deleteMessenger(KMessenger messenger){
        getMessengers().remove(messenger);
        messenger.setMember(null);
    }

게터에 보시면 빨간 줄로 한줄의 코드가 삽입 되었는데요. 이 것은 처음으로 새로운 Messenger 정보를 추가하려고 할 때 getMessengers()를 출력하는데 이 때 Set 객체가 없기 때문에 null pointer exception이 발생하기 때문입니다.
top