본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

67일차 - @SuperBuilder

엔티티 값 수정 시 @SuperBuilder 사용하기

@SuperBuilder(toBuilder = true) 어노테이션을 붙임으로써 상속 받은 속성의 값도 수정할 수 있다.

- 상속하는 클래스, 상속 받는 클래스 모두 어노테이션을 붙여야 한다.

  

Person 클래스

  

@SuperBuilder(toBuilder = true)
public class Person {
    private String name;
    private int age;
}

  

Person 클래스를 상속 받는 Member 클래스

  

@SuperBuilder(toBuilder = true)
public class Member extends Person {
    private String nickname;
}

  

toBuilder()를 통해 엔티티 값 수정하기

  

@Service
public class MemberService {

    ...
    
    private Member updateMember(Member member, String name, int age, String nickname) {
        Member member1 = member
                .toBuilder
                .name(name) // Person 클래스에서 상속 받은 속성
                .age(age) // Person 클래스에서 상속 받은 속성
                .nickname(nickname)
                .build();
        
        memberRepository.save(member1);
        return member1;
    }

}