Spring MVC アプリで Hibernate Validator を使用しています。context.xml で構成しました
<bean id="validator" class="com.mycompany.appname.validation.Validator" />
今ではコントローラーでそれを使用して、さまざまなオブジェクトを検証しています。一時的なオブジェクトについては問題ありませんが、永続的なオブジェクトについてはどうでしょうか。例:
私は1つをロードします:
MyObject o = myDao.getById(someId);
o.setName(name);
o.setPhone(phone);
Set<ConstraintViolation<o>> violations= validator.validate(o);
このオブジェクトの検証が失敗した場合でも、Hibernate はそれを更新します!
with validate()
のメソッドにアノテーションをつけてみましたValidator
@PrePersist
@PreUpdate
@PreRemove
public <RT> Set<ConstraintViolation<RT>> validate(RT target){...}
ただし、検証が失敗したかどうかに関係なく更新されます。ただし、検証が失敗した場合に例外をスローしたくありません。