반응형

Hibernate Validator에는 javax.validator에서 지원하는 기능 + 내부적으로 추가로 지원하는 기능이 있지만,

값 여러개를 지정해두고, 그 값에 포함이 되어 있는지 검사하는 기능은 없었다.

 

이런 경우 customizing을 해야 하는데,

Annotation하나를 만들고, 그 annotation에 validator을 등록 해준뒤에,  

그 annotation을 field등에서 가져다가 쓰기만 하면 된다.

 

이미 만들어져 있는 contraint annotation을 찾아보면,

기본적으로 가지고 있는 형식이 있다. (message, groups, payload)

 

보통은 message만 지정해서 많이 사용하는 것 같다.

message는 validation에 실패했을 때, 로그에 찍힐 메시지를 의미함. 

 

저 3개는 필수로 지정해주고, 나머지는 필요로 하는 값을 선언한다.

여기서는 여러개의 값에 대한 비교이므로, Object[] 같은 것으로 하나 넣어둔다.

 

그리고 가장 중요한..  

방금 생성한 Annotation상단에 @Constraint(validatedBy = ???Validator.class)을 넣어줌으로써,

이 Annotation이 선언된 곳은 지정된 Validator를 사용한다라고 명시해준다. 

 

Validator구현은 ConstraintValidator interface를 구현하면 끝난다.

내부적으로 initialize, isValid를 구현해야 하는데, 메소드명이 너무 명시적이어서 따로 설명은 필요 없을것 같다. 

반응형

'개발 > JPA, Hibernate' 카테고리의 다른 글

[Hibernate] Hibernate Validator  (0) 2016.06.11
[Hibernate] ddl-auto  (0) 2016.06.11
[Hibernate] Entity 선언 시 주의점  (0) 2016.06.11
[Spring Data Jpa] limit와 ordering  (1) 2016.06.11
[Spring Data Jpa] custom query 적용  (0) 2016.06.11
,