Публичные поля в DTO и объекте домена

Я делаю обзор кода для одного проекта. Его архитектуру вы можете увидеть на следующей схеме:

архитектура системы

На данный момент DTO — это простые POJO и домены — содержат аннотации Hibernate. Насколько я знаю, одно из преимуществ использования DTO заключается в том, что вы можете сделать все поля домена общедоступными и удалить весь код-заглушку с помощью геттеров и сеттеров. Это правильный подход?

Что вы думаете об удалении геттеров и сеттеров из DTO? Также, может быть, есть профессионалы, внедряющие DTO в Groovy?

Что вы думаете об этом?


person trnl    schedule 17.03.2011    source источник


Ответы (3)


Я бы использовал JavaBeans, потому что:

  1. Существуют вспомогательные классы с открытым исходным кодом, которые работают с JavaBeans. например Установка значения свойства, имя которого неизвестно до времени выполнения.

  2. Иногда вам нужно выполнить простое преобразование данных. Геттеры и сеттеры могут делать это прозрачно.

  3. Вы можете проверить данные "синтаксис". например Создайте исключение NullPointerException, если поле никогда не должно быть нулевым.

В любом случае не смешивайте общедоступные поля с JavaBeans. Это запутает чертовски всех.

person Tom Tucker    schedule 17.03.2011
comment
1. Не могли бы вы уточнить, о каких вспомогательных классах вы говорите? Что-то вроде BeanUtils? Но, насколько я знаю, у них нет проблем с работой с публичными полями. 2. Простое преобразование данных - да, но в идеале dto должны использоваться только для передачи данных и, конечно, могут быть реализованы дополнительные методы. 3. Проверьте синтаксис данных - опять же, я думаю, что это должен обрабатывать преобразователь DTO2Domain. Что ты об этом думаешь? - person trnl; 19.03.2011

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

Короче говоря, вы можете использовать public для простых полей.

person Vladimir Ivanov    schedule 17.03.2011

Единственным недостатком публикации полей в dto является то, что это может вызвать недопонимание у других членов команды. С геттерами и сеттерами вы можете ввести get* и подождать, пока ide не предложит вам все поля.

person trnl    schedule 19.03.2011