DTO в Play Framework

В моем приложении Play Framework возникла ситуация, когда куча моделей зависит от других моделей, что создает потенциальную опасность при попытке сериализовать их в JSON. Кроме того, в каждой модели есть несколько свойств, которые я не хочу раскрывать клиенту. И последнее, но не менее важное: некоторые свойства экземпляра moel, которые получает веб-клиент, на самом деле поступают не из БД, а из стороннего веб-сервиса.

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

Вопрос в том, где мне разместить функцию преобразования DTO для каждого класса Model? Контроллер? Модель? Может быть, лучшим подходом было бы следовать стратегии сериализатора и создать несколько классов преобразования — по одному для каждой модели?

Я больше всего опасаюсь, что преобразователи также должны знать друг о друге, потому что, очевидно, я хотел бы сначала превратить каждый из экземпляров Book в экземпляре Author в DTO, а затем также превратить Author в DTO. Это действительно плохо?

7
задан Preslav Rachev 17 March 2012 в 22:41
поделиться