롬복의 @Data
어노테이션은 @Getter
, @Setter
, @RequiredArgsConstructor
, @ToString
, @EqualsAndHashCode
을 한 번에 설정해준다.
웬만하면 @Data
보다는 각각의 어노테이션을 따로 붙혀주는 것이 좋다.
만약 엔티티의 ID를 MySQL의 Auto Increment같은 기능을 사용하여 넣는다면 @ID
어노테이션이 붙어있는 멤버의 값을 set할 필요가 없을 것이다.
그럴때는 다음과 같이 멤버 변수에 @Setter
어노테이션을 붙이고 AccessLevel
을 설정해주어서 접근 제한자를 설정하면 된다.(@Getter
또한 똑같이 적용이 가능하다.)
@Data
@Entity
public class UserSubject {
@Setter(AccessLevel.NONE)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long usId; // DB에서 설정하기 때문에 세팅할 필요 X
...
}
허용되는 access level은 PUBLIC
, PRIVATE
, PROTECTED
, PACKAGE
, NONE
이 있고 따로 명시해주지 않는다면 기본적으로 접근 제한자는 PUBLIC
이 된다. 접근 자체를 막고 싶다면 NONE
으로 설정해주면 된다.