На самом деле тут всё сложно.
В идеале, все должно быть так:
В массиве объектов "таскать" за собой полное содержание статей
Потому что объект и должен, по идее, содержать все свойства сущности "Статья".
Но все эти прекрасные теории разбиваются о суровую действительность. Главных камня преткновения два:
- Заведомая условность маппинга записи из таблицы БД на объект в программе.
- Не бесконечная мощность компьютера, которая и заставляет нас не таскать текст статьи там, где нужно вывест только заголовок.
Поэтому мы идем на всяческие ухищрения. В частности, мы договариваемя сами с собой, что наш объект "статья" - это отображение записи из таблицы. То есть, он жёстко привязан к структуре таблицы в БД. И дальше мы делаем себе ещё одно послабление - при инициализации объекта мы сожем указать, что нам нужен только заголовок. И тогда код создаст объект, то у него будет заполнено только одно свойство.
Соответственно, ответ на первый вопрос - массив объектов, но урезанных, с одним заполненным свойством!
Ответ на второй вопрос кроется в том же маппинге: Описывая свой объект как отображение таблицы в БД, мы можем описать и связи этой таблицы! И тогда наш объект сможет автоматически "подтягивать" связанные данные, если мы к ним обратимся.