Автоматически обновлять / копировать / наследовать JTO-файлы DTO из класса сущностей - PullRequest
3 голосов
/ 20 ноября 2010

В нашей системе мы выбираем бины управляемых сущностей ORM из базы данных (используя hibernate), а затем копируем их в бины DTO для отправки в пользовательский интерфейс.

Большинство свойств в DTO имеют то же имя, что и у сущности, но типы возвращаемых данных часто отличаются, поскольку любые связанные ссылочные сущности должны быть преобразованы для хранения только идентификатора или другого DTO.

В моем идеальном мире снов каким-то образом, когда я редактировал javadocs для сущности, javadocs для методов с тем же именем в DTO будет обновляться, чтобы соответствовать. Это можно сделать с помощью инструмента сборки или плагина eclipse.

Кто-нибудь видел там что-нибудь подобное?

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Ну, это определенно возможно.Вам нужен парсер исходного кода, я бы порекомендовал javaparser .

Записать двух посетителей , одного для чтения JavaDocs, другого для их записи.В обоих случаях вы, вероятно, начнете с VoidVisitorAdapter и переопределите public void visit(MethodDeclaration n, A arg) и public void visit(JavadocComment n, A arg)

Сделайте все это доступным изглавный класс и вызовите этот основной класс через maven ( Exec-Maven-Plugin ) или муравей ( Java Task ) во время сборки.

0 голосов
/ 13 января 2015

Я думаю, что вы хотите, может быть неразумным.

DTO не должен отображаться на объект. Если все таки зачем тебе DTO?

Имя сущности обычно сопоставляется с именем таблицы, а поля сопоставляются со столбцом. Если вы получили имя поля сущности, то вы можете легко получить доступ к объекту таблицы в системе ORM. Это небезопасно.

Кроме того, DTO должен быть гибким, чтобы адаптироваться к потребностям пользовательского интерфейса и потребностям другого уровня. Так что речь идет о передаче данных, преобразовании, комбинации, меньшем количестве полей, чем у сущности, и многом другом.

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

В заключение, если это приложение Java EE корпоративного уровня, то DTO очень необходимо. Не копируйте имя или не имейте очень зависимую сущность, но наследуйте от этой сущности.

...