1. Lombok의 Setter 사용 지양해야하는 이유 - Builder 패턴을 사용해라
1) Setter 메소드를 사용하면 값을 변경한 의도를 파악하기 어렵다.
왜, 어떠한 의도로 데이터를 변경하는지 명확하게 알 수 없다. 코드를 역추적해봐야 한다
2) 객체의 일관성을 유지하기 여럽다.
자바 빈 규약을 따르면 Setter는 public으로 언제든지 변경할 수 있는 상태가 된다.
따라서 모든 곳에서 데이터를 변경할 수 있는 상태가 되기 때문에 객체의 일관성을 유지하기 어려워진다.
2. Setter의 대안
1) 생성자 오버로딩
-> 생성자를 오버로딩하기, 그러나 멤버변수가 많고 다양한 생성자를 가지게 된다면 코드가 길어지고 가독성이 떨어짐 따라서 Builder 패턴 사용
public class School {
private String region;
private String name;
public School(String region){
this.region = region;
}
public School(String region,String name){
this.region = region;
this.name = name;
}
2) Builder 패턴 사용
-> 빌더패턴은 필요한 데이터만 이용하여 위와같이 다양한 생성자를 가지게 하지 않고 클래스 생성이 가능하다. 전체 생성자 하나만 갖는 형태로 변경되어 유지보수 향상됨. 또한, 객체를 생성할 때 인자 값의 순서가 상관없다.
public class School {
private String region;
private String name;
@Builder
public Member(String region, int name){
this.region = region;
this.name = name;
}
3) 정적 팩토리 메소드
-> 정적 팩토리 메서드를 사용하면 이름을 가질 수 있어서 반환될 데이터를 추측할 수 있다.
public class School {
private String region;
private String name;
public static void createMember(String region, String name){
this.region = region;
this.name = name;
}
public static void createMemberName(String region){
this.region = region;
}
3. lombok.config +a
lombok.Setter.flagUsage = error
lombok.AllArgsConstructor.flagUsage = error
lombok.data.flagUsage= error
lombok.addLombokGeneratedAnnotation = true
https://cheese10yun.github.io/lombok-config/
4. Lombok Annotation 똑바로 알고 사용하기
1) ToString (JPA 사용시 주의할 점)
2) NoArgsConstructors
3) AllArgsConstructors
4) RequiredArgsConstructors
https://dev-splin.github.io/spring/Spring-Lombok/
JPA에서 롬복 사용할 때
'Back-end > Spring-핵심& webMVC' 카테고리의 다른 글
Spring Filter, Interceptor의 범위 및 SpringSecurity FilterChain와의 관계 (0) | 2023.01.18 |
---|---|
@RequestBody, @RequestPart (0) | 2023.01.15 |
Spring 예외 처리 전략 및 Global 예외처리 // @RestControllerAdivce (0) | 2023.01.03 |
Spring - 인터셉터 (0) | 2023.01.01 |
SessionStatus, @SessionAttributes, @SessionAttribute (0) | 2023.01.01 |