Это хорошая практика, чтобы использовать бины сущностей для внешнего интерфейса - PullRequest
0 голосов
/ 15 января 2020

Я использую Thymeleaf для внешнего интерфейса и Spring + Hibernate для внутреннего интерфейса.

Вместо создания DTO рекомендуется использовать те же бины сущности для внешнего интерфейса. Для атрибутов, которые являются эксклюзивными для внешнего интерфейса, мы могли бы в любом случае использовать @Transient, верно?

Я заметил, что в демонстрационном приложении PetClini c Spring они повторно использовали модели.

Ответы [ 2 ]

1 голос
/ 15 января 2020

Объекты являются частью доменно-управляемого дизайна (DDD), и важным аспектом проектирования является наличие идентификатора. Они предназначены для представления ваших сущностей, являющихся долгоживущими объектами в системе, т.е. в БД, Storages et c.

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

Я полагаю, вы будете использовать MVC в вашем проекте. В этом аспекте с использованием Entity, который находится после сервисного уровня, будут тесно связаны сущности с внешним интерфейсом. Что в свою очередь против гибкости MVC. Лучше воздержись от этого.

0 голосов
/ 20 января 2020

Вы можете использовать свои доменные объекты вместо создания объектов дополнительного просмотра или DTO. Главным образом потому, что вы говорите, что это не большой проект.

Однако не добавляйте атрибут в ваш класс домена только для ваших нужд переднего плана. Даже с @Transient. Это кодовый запах для меня. когда вам нужно это сделать, создайте класс представления или DTO вместо использования объекта домена.

...