Использование валидатора Hibernate с JPA и Spring

Я использую Hibernate Validator 4.0.2, Spring 3.0 и Hibernate 3.3.2 (который, как я понимаю, является pre-JPA2) как поставщик JPA 1.

Мне было легко интегрировать Validator в уровень MVC (он просто работает), но не может понять, как интегрировать валидатор автоматически в entityManager JPA (JPA 1).

В принципе, у меня есть некоторые объекты, которые будут сохраняться, но которые не поступают с веб-уровня и поэтому не были проверены. Я хотел бы аккуратный способ запустить их с помощью проверки правильности.

Есть ли простой способ сделать это? Я знаю, что если бы я использовал провайдера JPA 2 (например, Hibernate 3.5, когда он был выпущен), это было бы почти автоматически. Это примерно то, что я ищу.

Ответ 1

Вам нужно написать прослушиватель объектов и инициировать проверку на @PrePersist, @PreUpdate и даже @PreRemove (для этого есть допустимый прецедент). См. Bean Проверка с JPA 1.0 для образца кода.