Управление направленностью JPA-объектов в веб-слое без DTO - PullRequest
3 голосов
/ 21 октября 2011

Я работаю над веб-приложением, которое использует JPA / EclipseLink вместе с Spring и Tapestry.

На данный момент мой веб-слой получает и отображает сущности JPA напрямую, без использования DTO.

Это хорошая идея? Каковы плюсы и минусы моего решения? Какие есть альтернативы? Должен ли я беспокоиться о реализации DTO?

С уважением,

1 Ответ

4 голосов
/ 21 октября 2011

Объекты JPA представляют собой простые POJO и, следовательно, (в отдельном состоянии) являются прекрасным примером DTO. Я бы не стал создавать еще один слой абстракции, если бы он не был абсолютно необходим.

На мой взгляд, в некоторых ситуациях вы можете использовать явные DTO:

  1. когда вам понадобится составной объект для использования на уровне графического интерфейса, который не нуждается (или не может) использовать поля непосредственно из сущностей JPA (т.е. объединяет данные из разных объектов или использует только часть данных и вы не хотите, чтобы клиент имел доступ к некоторым другим частям)
  2. когда вы используете управляемый доменом дизайн, в котором бизнес-логика строится вокруг ваших сущностей. В этом случае ваши сущности не являются простыми компонентами Java Bean, а являются полноценными компонентами бизнес-логики, и поэтому вы, возможно, не захотите предоставлять их напрямую клиенту.

Всегда задавайте себе вопрос - что это дает вам, чтобы ввести еще один уровень абстракции и, если это необходимо в вашем конкретном случае.

НТН.

...