Добрый день! Интересует вопрос как правильно организовать доступ к статьям на сайте из базы данных. Как я понял, шаблон data mapper ничего не знает о структуре бд и представляет собой уровень доступа к базе данных, минуя sql запросы. Шаблон репозиторий позволяет инкапсулировать хранилище (то есть это может быть база данных, файловая система и т.д.) и уже манипулирует определенными сущностями. Например добавить статью, удалить статью (в общем, CRUD). Чтобы вернуть данные в формате нужного объекта в репозитории осуществляется цикл, который результаты пришедшие от data mapper преобразует в эти самые объекты. Но также нужно, чтобы в некоторых случаях эти статьи возвращались в формате xml. Собственно вопрос. На каком уровне это делать? В одних статьях говорится, что этим занимается data mapper, в других говорится, что репозиторий должен возвращать данные в едином формате, а остальные операции ложатся на service layer. Вариант первый - сделать на уровне data mapper, но этот уровень не должен знать о конкретных сущностях, вариант второй - сделать на уровне repository, но он должен возвращать данные в определенном формате. Вариант третий - сделать на уровне service layer, но тогда получается лишний прогон цикла. Первый - когда идет преобразования в нужные объекты в репозитории, второй - когда эти объекты преобразуются в xml. Вариант четвертый - я неправильно понял эти шаблоны. Как правильно это реализовать?