Где лучше ставить ограничения?
Знать о себе и своем поведении должна сущность.
Ибо методы доступа могут быть разные и базу Вы можете мигрировать
На базе слишком поздно. Запрос, который априори будет отменен, проползет все круги ада и еще и обратится к базе. Это все ресурсы. Используйте клиентскую валидацию с подтверждением на сервере. К примеру на этапе создания модели.
Ну и небольшой P.S. - ваш код делает маленький сюрприз клиенту, его использующему. Без доступа к реализации я не узнаю почему я присвоил свойству значение 9000, а там все равно 0. Или бросайте исключение информируя о неверных данных или на уровне клиентской логики сообщите мне что я ввел хрень.