2010-02-15 5 views
6

Я использую DataNucleus в качестве реализации JPA для хранения моих классов в своем веб-приложении. Я использую набор преобразователей, которые имеют toDTO() и fromDTO().Entity to DTO conversion with JPA

Моя проблема в том, что я хочу, чтобы избежать всю БД, передаваемый по проводам:

  • Если я ленивые нагрузки, преобразователь будет пытаться получить доступ всех полей и загружаю затем (в результате чего очень нетерпеливая загрузка).
  • Если я не lazy load, я получу огромную часть БД, так как пользователь содержит группы, а группы содержит пользователей и т. Д.

Есть ли способ явно загрузить некоторые поля и оставить остальных как NULL в моем загруженном классе? Я пробовал документы DataNucleus без везения.

ответ

3

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

В последнее время у нас было целое «для DTO или нет для DTO, это вопрос« обсуждение СНОВА ». Требование для них (особенно в контексте приложения JPA) часто уже не существует, но один из аргументов для DTO имеет тенденцию к тому, что представление имеет более грубые требования к данным.

+0

Вы имеете в виду набор DTO, который будет использоваться каждым видом? Как пользователь, не имеющий поля «groups» для отправки на просмотр, который не должен знать группы пользователей и т. Д.? – WhyNotHugo

+1

Это действительно зависит от вашего приложения и того, как вы его создаете. Вы говорите о том, что это веб-приложение, но на одном дыхании вас беспокоят вещи, отправляемые по проводам. Какой провод? Провод между сервером приложений и базой данных или логическим проводом между представлением и уровнем модели/контроллера или провод между вызовом AJAX браузера и сервером? –

+1

В основном, провод между браузером и сервером, но я также хотел бы уменьшить данные java-сервера DB <->, которые также искажаются ... Я думаю, что ленивая загрузка и использование одного dto для представления работают, поскольку при преобразовании модели в , Я не буду случайно загружать ненужные данные, и я отправляю только то, что нужно мнению. Это больше работы (много классов), но я не вижу выбора. Благодарю. – WhyNotHugo