코드를 짜면서 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 |