@NotNull / @NotEmpty / @NotBlank / nullable == false
@NotNull
NotNull은 말 그대로 null 값만 허용하지 않는다. 그렇기 때문에 "", " " 가 입력되었을 경우는 허용하게 된다. Null이 들어오게 되면, 로직에 예상치 못한 오류가 발생하거나 문제가 생길 경우 사용해야 한다. 즉, 초기화나 공백의 값이 들어와 저장은 되야하지만 Null로 들어온 경우 오류가 나는 변수를 받을때 사용하면 된다.
@NotEmpty
NotEmpty는 null과 추가로 "" 입력도 허용하지 않지만, " " 의 입력은 허용된다.
@NotBlank
가장 강력. NotBlank는 세 가지 어노테이션 중 가장 강도가 강한 것으로 null, "", " " 모두 허용하지 않는다.(최소 한 개 이상의 공백 문자가 아닌 문자를 포함해야 한다.)
nullable=false
엔티티 필드의 null을 검증하기 위해서 대표적으로 사용되는 어노테이션이 @Column(nullable = false)이다
-@NotNull과 @Column(nullable = false)의 차이
우선 @Column(nullable = false)을 사용할 때와 마찬가지로 @NotNull 역시 테이블 생성시 NOT NULL DDL이 입력된다. 이는 Hibernate가 @NotNull 어노테이션 역시 해석할 수 있기 때문이다. 만일 Hibernate가 해석하길 원하지 않는 경우 application.properties에 아래 옵션을 지정해주면 된다.
(DDL이란?
데이터 정의어(Data Defination Language, DDL)
데이터베이스의 테이블의 생성, 변경, 삭제를 담당하는 명령어.
대표적으로 CREATE, ALTER, DROP, RENAME, TRUNCATE가 있다.)
참고:
https://wildeveloperetrain.tistory.com/68
https://hyeon9mak.github.io/not-null-vs-column-nullable-false/