Realisticamente, o MVC é principalmente um padrão de implementação de interface do usuário, portanto a questão é um tanto discutível. No entanto, existem realmente apenas duas opções gerais. Seu controlador normalmente envia solicitações para carregar ou salvar entidades em seu modelo usando 1) uma camada de serviço de algum tipo ou 2) o padrão Active Record.
A camada de serviço pode assumir várias formas, embora minha preferência pessoal seja trabalhar com uma abstração de repositório para as entidades raiz agregadas, cujas implementações concretas funcionarão com algum tipo de ORM ou um DAO leve ou um API para algum armazenamento não relacional, se isso fizer sentido para o aplicativo.
O padrão Active Record significa que seu modelo tem responsabilidade pela persistência, embora geralmente signifique uma classe base de algum tipo que gerencia os mapeamentos para sua loja, portanto, seu modelo não está diretamente envolvido diretamente.
Basicamente, o controlador despacha solicitações para persistir objetos, seja uma chamada para seu repositório, sua implementação UnitOfWork ou o método Save em suas entidades. Se você estiver usando repositórios, seus objetos de modelo ignoram a persistência.