답변:
@NotNull
: CharSequence, Collection, Map 또는 Array 객체 는 null 이 아니지만 비어 있을 수 있습니다.
@NotEmpty
다음의 CharSequence, 컬렉션,지도 나 Array 객체가 null이 아닌 크기> 0 .
@NotBlank
: 문자열이 널이 아니고 잘린 길이가 0보다 큽니다 .
이해를 돕기 위해 이러한 제약 조건이 어떻게 정의되고 실행되는지 살펴 보겠습니다 (버전 4.1을 사용하고 있습니다).
@NotNull
제약 조건은 다음과 같이 정의된다 :
@Constraint(validatedBy = {NotNullValidator.class})
이 클래스에는 isValid
다음과 같이 정의 된 메서드가 있습니다.
public boolean isValid(Object object, ConstraintValidatorContext constraintValidatorContext) {
return object != null;
}
@NotEmpty
제약 조건은 다음과 같이 정의된다 :
@NotNull
@Size(min = 1)
따라서이 제약 조건 은@NotNull
위 의 제약 조건을 사용 하며 @Size
그 정의는 객체에 따라 다르지만 자명해야합니다.
마지막으로 @NotBlank
제약 조건은 다음과 같이 정의됩니다.
@NotNull
@Constraint(validatedBy = {NotBlankValidator.class})
따라서이 제약 조건도 제약 조건을 사용 @NotNull
하지만 NotBlankValidator 클래스로 제약합니다. 이 클래스에는 isValid
다음과 같이 정의 된 메서드가 있습니다.
if ( charSequence == null ) { //curious
return true;
}
return charSequence.toString().trim().length() > 0;
흥미롭게도이 메서드는 문자열이 null이면 true를 반환하지만 잘린 문자열의 길이가 0 인 경우에만 false를 반환 @NotEmpty
합니다 @NotNull
. 앞서 언급했듯이 정의에도 .
다음은 몇 가지 예입니다.
문자열 이름 = null;
@NotNull
: 거짓
@NotEmpty
: 거짓
@NotBlank
: 거짓
문자열 이름 = "";
@NotNull
: 참
@NotEmpty
: 거짓
@NotBlank
: 거짓
문자열 이름 = "";
@NotNull
: 참
@NotEmpty
: 참
@NotBlank
: 거짓
String name = "대답!";
@NotNull
: 참
@NotEmpty
: 참
@NotBlank
: 참
아래 링크의 설명이 마음에 들었습니다. http://www.itprogrammingtutorials.com/2015/java/hibernate/hibernate-validator-diff-notblank-notempty/
@NotNull : 내용에 관계없이 값이 null이 아닌지 확인합니다.
@NotEmpty : 값이 null 또는 비어 있지 않은지 확인합니다. 빈 공간 만 있으면 비어 있지 않은 것으로 허용합니다.
@NotBlank : 값이 null 또는 비어 있지 않은지 확인하고 값을 먼저 트리밍합니다. 즉, 빈 공간 만 허용하지 않습니다.
따라서 필드가 null이 아니라 빈 공간이 아니라 텍스트 만 포함되어 있는지 확인하려면 @NotBlank를 사용해야합니다.
@NotNull:
제한된 CharSequence, Collection, Map 또는 Array는 null이 아닌 한 유효하지만 비어있을 수 있습니다.@NotEmpty:
제한된 CharSequence, Collection, Map 또는 Array는 null이 아니고 크기 / 길이가 0보다 큰 한 유효합니다.@NotBlank:
제한된 문자열은 null이 아니고 잘린 길이가 0보다 큰 한 유효합니다.