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 |