Реально MVC - це здебільшого схема впровадження інтерфейсу, тому питання дещо суперечить. Однак дійсно є лише два варіанти великих зображень. Ваш контролер, як правило, розсилає запити для завантаження або збереження об'єктів у вашій моделі, використовуючи будь-який 1) сервісний рівень певного типу або 2) шаблон активного запису.
Сервісний рівень може приймати будь-яку з декількох форм, хоча мої особисті переваги - це робота з абстракцією сховища для сукупних кореневих сутностей, конкретні реалізації яких будуть працювати або з якоюсь ORM, або з легким DAO, або з API для деяких нереляційних магазинів, якщо це має сенс для програми.
Шаблон Active Record означає, що ваша модель несе відповідальність за стійкість, хоча зазвичай означає, що базовий клас керує відображенням вашого магазину, тому ваша модель насправді не так безпосередньо задіяна.
В основному, контролер розсилає запити на збереження об'єктів, будь то виклик до вашого сховища, ваша реалізація UnitOfWork або метод Save для ваших об'єктів. Якщо ви використовуєте сховища, об’єкти вашої моделі не знають стійкості.