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