Стратегия валидации для единицы работы - PullRequest
2 голосов
/ 08 июня 2010

Когда я использую шаблон единицы работы (с JPA), я получаю сущность из репозитория, изменяю ее и неявно сохраняю изменения в единицах и единицах работы в базе данных.

Теперь мне интересно, как выполнить проверку с помощью шаблона единицы работы. Если я применяю изменения (из пользовательского ввода) к объекту домена и проверяю после этого, значения этого объекта будут изменены, даже если проверка не удалась. Как избежать записи объекта с недопустимым состоянием в базу данных? Откатить единицу работы?

Одна из целей ООП состоит в том, чтобы объекты следили за своим состоянием, чтобы они никогда не принимали недопустимые значения. Для этого подхода мне пришлось выбросить исключения, и это противоположно подходу валидации бина (и валидации весны) сверху. Но может быть, это проще и лучше.

Какую стратегию валидации вы бы использовали (в дизайне, управляемом доменом)?

1 Ответ

2 голосов
/ 08 июня 2010

Как избежать записи объекта с недопустимым состоянием в базу данных? Откатить единицу работы?

Если вы используете API Bean Validation, он выдаст исключение, и изменения не будут сохранены (если включено, проверка должна произойти на заключительном этапе PrePersist, PreUpdate и PreRemove события жизненного цикла).

В JPA 2.0 просто добавьте реализацию Bean Validation в путь классов.

С JPA 1.0 см. этот предыдущий ответ .

...