Я придерживаюсь проверки в моем текущем прецеденте. Мое приложение имеет стандартную структуру (WEB < -> EJB3 Services < -> EJB3 DAO < -> DB). У меня есть объект, к которому применяются аннотации для проверки.Как объединить комплексную проверку бизнеса с JSR-303?
@Entity
class PhoneNumber {
...
private NumberType numberType;
}
где
enum NumberType {
FIXED,
MOBILE,
ANY
}
Теперь у меня есть новое правило проверки должны быть применены. При обновлении PhoneNumber не должно быть возможности изменить NumberType на ANY, если он был установлен ранее для FIXED или MOBILE.
Мои правила проверки бланов проверяются непосредственно перед операциями db, а правило выше должно применяться на уровне обслуживания (по крайней мере, я так думаю), чтобы иметь доступ к БД для получения предыдущей версии сущности для сравнения. Но, если фаза еще не проверена, я вынужден проверить ее вручную, если, например, numberType не равно нулю.
Не могли бы вы предоставить мне некоторые советы или общие правила, как справляться с более сложными проверками бизнеса (не только проверять значения одного поля в изоляции) при использовании проверки бинов?
Спасибо, но это не подходит для моей проблемы. Мне не нужна проверка поля. Мне нужно проверить одно поле против его предыдущего значения (хранящегося в БД). – grafthez
Таким образом, вам придется запрашивать сущность из базы данных в вашем настраиваемом валидаторе и проверять ее значения. Но я не думаю, что это хорошая практика. Вместо этого я бы загрузил старый объект в бизнес-логику и проверил его значения здесь. Таким образом, вы не скрываете эту логику в валидаторе. – Kai