롬복의 @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으로 설정해주면 된다.