Я немного борюсь с моделью моих сущностей.@Transient vs decorator
У нас есть сущность с 6-8 переменными экземпляра. Два из них на самом деле не сохраняются в базе данных, а используются только для проверки или отображения в пользовательском интерфейсе. Поэтому, когда мы извлекаем сущность, мы заполняем внешний вид.
Теперь, по словам одного из моих коллег, его лучшая практика использует декоратор вместо использования @Transient. В какой-то степени я согласен. Потому что он разъясняет фактическую модель, которую представляет БД.
Но это добавит дополнительные шаблонное для некоторых случаев (например, для бизнеса, я могу назвать объект как MyEntityBO. Но если я использую его для UI ... снова имя будет немного запутанными.
Моим вопрос, что сценарий лучше использовать @Transient, а не декоратор или наоборот
Ни. Вы не должны использовать объекты непосредственно из пользовательского интерфейса по этой причине. Вы должны скорее иметь определенную для представления модель, представляющую собой модель, специально разработанную для представления. Эта модель просмотра относится к пользовательскому интерфейсу. Модель просмотра может инкапсулировать исходную модель через композицию, но это не будет декоратором как таковым. То есть, если ваше приложение не является простым CRUD, в этом случае просто используйте @Transient. – plalx
можете ли вы показать пример кода, чтобы дать представление о том, как вы можете добавить шаблон декоратора здесь? –
@plalx В моем случае это не всегда пользовательский интерфейс. и объект также используется для другой проверки. состав кажется лучшим способом справиться с этой ситуацией. Создайте 2 объекта. ObjectUI, ObjectBO. так что только getter с тем, что необходимо для UI, будет там. так что случайно, то, что не должно быть видимым для пользовательского интерфейса, но должно быть там в основном объекте, например. id/password можно скрыть. (опять же, аргумент счетчика здесь «@IgnoreJson» :) Я пытаюсь понять, в каких случаях «@Transient» по-прежнему жизнеспособен. Если вы сказали, что приложение - это только CRUD, имеет смысл иметь только «@Transient» –