엔티티의 필드에 사용하는 annotation
조건을 걸어주는 역할이다.
@JoinColumn은 ManyToOne이 있는 곳에 붙여준다.
자주 사용하는 옵션
unique : 중복 방지(unique = true)nullable : null이 저장 방지(nullable = false) name : DB 테이블 컬럼의 이름을 수동으로 지정하고 싶을 때 사용updatable : 변경 감지(Dirty Checking)에서 제외하고 싶은 필드에 updatable = false 사용. 주로 @CreatedDate와 함께 사용함.@Entity
public class Comment extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String content;
@Column(nullable = false)
private String writer;
@ManyToOne
@JoinColumn(nullable = false)
private Post post;
@NotNull : null 허용하지 않음. but, Empty String은 허용함 ("", " ")
@NotEmpty : null, ""을 허용하지 않음(" "는 허용)
@NotBlank : null, "", " " 모두 허용하지 않음
@Email : 이메일 형식을 검사 but, ""의 경우를 통과
@Pattern(regexp = ) : 정규식 검사
@Size(min=, max=):길이를 제한
@Positive : 값을 양수로 제한.
@PositiveOrZero : 값을 양수와 0만 가능하도록 제한.
@Negative : 값을 음수로 제한.
@NegativeOrZero : 값을 음수와 0만 가능하도록 제한.
@Future : 현재보다 미래.
@Past : 현재보다 과거.
@AssertFalse : false 여부, null은 체크 X.
@AssertTrue : true 여부, null은 체크 X
이 어노테이션은 보통 request에 사용한다. 이걸 진짜 검증하기 위해서는 controller에 @Valid을 달아주면 검증된다.