Автоматически обновлять/копировать/наследовать javadocs DTO из класса сущностей

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

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

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

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


person Dobes Vandermeer    schedule 19.11.2010    source источник
comment
О каких методах идет речь? Если это DTO, то это, вероятно, структура данных без какой-либо бизнес-логики.   -  person slnowak    schedule 23.02.2015


Ответы (2)


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

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

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

person Sean Patrick Floyd    schedule 20.11.2010
comment
Спасибо, это единственный ответ, и теоретически он должен работать. Спасибо. - person Dobes Vandermeer; 25.07.2011

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

DTO не должен быть сопоставлен с сущностью. Если все равно, зачем вам DTO?

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

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

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

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

person user3016087    schedule 13.01.2015