본문 바로가기

Programming/Spring

[Project] Builder 패턴 사용

코드를 짜면서 setter를 사용하는것을 지양해야 한다는 얘기를 들어본적이 있다.

하지만 왜 그렇게 짜면 안되는지 그러면 어떻게 사용해야 하는지는 잘 모른다. 

 

그거에 대해서 알아보고 어떻게 작성해야 하는지 알아보겠다.

 

setter 지양

1.setter를 사용하면 값을 변경한 의도를 알기 어렵다.

2.객체의 일관성을 유지하기 어렵다.

 

setter를 사용하게 되면 외부에서 객체의 내부 상태를 변경 할 수 있으므로 객체의 상태가 언제든지 바뀔 수 있다. 코드의 유지보수를 어렵게 만들 수 있다.

 

그래서 대안으로 생성자를 통한 주입과 Builder 패턴을 통한 주입이 있다.

Builder를 통한 예시를 알아보자

우선 생성자보다는 Builder 패턴이 복잡한 객체를 유연하고 가독성 좋게 생성하기 편하다.

 

@Builder
public class BookMarkDAO {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private Long bookid;
    private String nickname;
    private int page;


}
// 책갈피 정보가 존재하지 않으면 새로 저장
            BookMarkDAO newBookMark = BookMarkDAO.builder()
                    .nickname(bookMarkDAO.getNickname())
                    .bookid(bookMarkDAO.getBookid())
                    .page(bookMarkDAO.getPage())
                    .build();

            bookMarkRepositroy.save(newBookMark);  // 새로운 책갈피 정보 저장

 

이렇게 작성하면 된다.

* Builder 패턴을 사용하게 되면 인자 값의 순서는 상관없다.

'Programming > Spring' 카테고리의 다른 글

nGrinder 부하 테스트  (1) 2024.12.09
[JPA] 랜덤값 가져오기  (0) 2024.09.29
Spring Boot JPA를 이용한 수정하기 PUT  (0) 2024.01.08
AOP #8.1~#8.2  (0) 2023.01.15
스프링 DB 접근 기술 #7.3~#7.6  (0) 2023.01.14