Lorran, no modelo MVC, as responsabilidades são definidas da seguinte maneira:
- View: camada responsável apenas pela interface com o usuário.
- Controller: camada responsável pelo recebimento e tratamento de requisições, aplicação de regras de negócio[1].
- Model: camada responsável pela persistência e representação do modelo de dados.
[1] Já entrei em diversas discussões no mundo "real", com argumentos fortes para ambos os lados, há quem defenda que regras de negócio devem ser tratadas diretamente controllers, há quem diga que devem ser tratadas em models. Eu sou da opinião que o melhor lugar para tratar regras de negócio seria nas models, já que ninguém melhor que a própria model para conhecer o seu prórprio domínio de dados e responsabilidades, fazendo com que este código seja reutilizado em todo o projeto.
[2] Pesquise sobre um padrão de projeto chamado generic repository, pode lhe dar uma luz e te ajudar a construir argumentos mais embasados sobre como tratar acesso a dados.
[3] Respondendo sua pergunta, acredito que esteja correto, o tratamento de acesso a dados deve ser apenas invocado através da controller e realizado efetivamente na camada de modelo, seja utilizando DAOs ou o padrão de repositorios (minha experiência é com AspNET MVC, portanto estou tentando lhe dar uma ajuda conceitual).