본문 바로가기
Spring/DB연동

Entity클래스 어노테이션

by doriver 2025. 2. 20.

 

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class Member {

}

@Setter를 사용하지 않기

그 의도가 분명하지 않고 객체를 언제든지 변경할 수 있는 상태가 됨

값 변경이 필요한 경우 의미 있는 메서드를 생성하여 사용하는 것이 좋다

 

@NoArgsConstructor(access = AccessLevel.PROTECTED) 사용하기

JPA 구현체는 엔티티의 기본 생성자를 통해 프록시 객체를 생성하는데, 이 때 접근 권한이 private이면 프록시 객체를 생성할 수 없다. protected로 하면 프록시 객체생성 가능

아무런 값도 갖지 않는 의미 없는 객체의 생성을 막게 됩니다. 즉 무분별한 객체 생성에 대해 한번 더 체크

 

생성자에 @Builder붙이기 + @AllArgsConstructor쓰지 않기

 

 

 

@Data사용x, 필요한 개별 어노테이션 사용하기

@Data는 @Getter, @Setter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode을 한꺼번에 설정

하지만 lombok의 설정들(ex. callSuper, includeFieldNames, exclude)을 지정할 수 없다

 

 

@ToString 쓸때 연관관계 매핑된 엔티티 필드는 제거하기

연관 관계 필드를 toString()에서 사용하면 무한루프 문제가 발생할 수 있습니다. 
이는 연관된 엔티티 객체가 다시 현재 엔티티를 참조하게 되어 무한 루프가 발생하기 때문입니다. 

 

 

 

 

 

 

 

 

'Spring > DB연동' 카테고리의 다른 글

entity에서 원시타입 vs Wrapper클래스  (0) 2025.02.22
JPA Entity에 Validation  (0) 2025.02.22
JPA Entity 관련 01  (0) 2025.01.17
JPA 에러 모음 01  (0) 2025.01.16
JPA 설정 01  (0) 2025.01.14