Как выполнить проверку объекта домена перед его сохранением?

Сущность (скажем, UserEntity) имеет жесткие правила для своих свойств и может существовать в двух состояниях — сохраненном (что означает, что он имеет id) и предварительно сохраненном (что означает, что у него еще нет id).

Согласно ответу на этот вопрос о том, как обрабатывать требуемые свойства, «настоящий» UserEntity должен создаваться только с идентификатором, переданным его конструктору.

Однако, когда мне нужно создать новый UserEntityиз информации, отправленной браузером, мне нужно иметь возможность проверить информацию перед сохранением в БД.

Раньше я просто создавал пустую UserEntity (без id), устанавливал новые свойства и проверял их, но в этом новом, более безопасном способе мышления о сущностях, Я никогда не должен создавать новый UserEntity без его id.

Я не хочу создавать ДВА места, которые знают, как проверить свойства моего UserEntity, потому что, если они когда-либо изменятся (а они будут), это удвоит количество кода для обновления и удвоит шансы на ошибки.

Как эффективно централизовать знания о проверке свойств моего объекта?

Примечание

Одна идея, которая у меня была, отражена в этом вопросе, в котором я рассматриваю возможность хранения негосударственных свойств, таких как электронная почта, пароль и имя, в стандартизированном объекте-значении, который знал бы о правилах для его свойств, которые могут использовать различные сервисы, такие как контроллер, валидатор и репозиторий или картограф.

5
задан Community 23 May 2017 в 10:32
поделиться