Должен ли Transfer Object всегда отражать всю запись строки БД? - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть вопрос об объекте переноса в шаблоне DAO. Допустим, у вас есть таблица USER, и в этой таблице 20 полей. В бизнес-логике я заметил, что в некоторых сценариях мне может понадобиться поле 1 - поле 3, а поле 4 - поле 6 в других сценариях. Поэтому, когда я реализую класс userTO, я должен определять только поля 1-6 или я должен определять все 20 полей. Другое дело, если я определю все 20 полей, SQL в классе UserDAOImpl всегда нужно будет выбрать все 20 полей, чтобы инициировать объект userTO, это будет проблемой?

Любые предложения с благодарностью. Спасибо!

1 Ответ

0 голосов
/ 02 мая 2011

Предполагая, что ваш класс userTO очень сплоченный ...

Когда вы создаете экземпляры объектов, вы всегда хотите убедиться, что они созданы в допустимом состоянии.Это означает, что вы можете взять экземпляр данного объекта и иметь возможность передать его в метод в любом месте вашей программы без получения исключений типа ошибки программирования (например, NullPointerException).Это привело бы к заключению, что вы всегда должны создавать свое пользовательское ТУ со всеми 20 полями.

Однако мы живем и работаем в рамках ограничений.Если заполнение всех 20 полей в каждом экземпляре userTO вызывает ненужную и неблагоприятную нагрузку на вашу систему, тогда вы можете подумать о создании userTOShort, который содержит подмножество полей userTO, которые часто используются.Тогда «необязательные дополнительные» поля, которые нужны очень редко, могут быть заполнены при необходимости.Это "короткое" решение кажется немного грязным, но я не знаю более чистого решения.

...