~/questoes/programacao
O padrão MVC organiza a aplicação em camadas distintas: as rotas definem os endpoints da API, os controllers gerenciam a lógica de negócio e processam as requisições, e os repositórios encapsulam toda comunicação com o banco de dados. Essa separação de responsabilidades torna o código mais limpo, testável e fácil de manter.
As rotas definem os endpoints (GET, POST, PUT, DELETE), os controllers recebem essas requisições e executam a lógica de negócio, e os repositórios isolam as operações do banco de dados. Essa divisão permite que cada camada tenha uma responsabilidade clara e específica.
Esta é a estrutura correta do padrão MVC com Repository. As rotas recebem as requisições HTTP, direcionam para os controllers que processam a lógica, e os controllers usam repositórios para acessar dados sem conhecer os detalhes da implementação do banco.
Esta alternativa inverte os papéis. Repositórios nunca definem endpoints, rotas não processam lógica de negócio, e controllers não devem executar operações no banco de dados. Cada camada tem responsabilidades bem definidas.
Controllers nunca devem definir rotas nem conectar diretamente ao banco de dados. Quando controllers acessam o banco sem intermediários, o código fica acoplado e difícil de testar. É exatamente para evitar isso que usamos repositórios.
Rotas não comunicam-se diretamente com repositórios ou banco de dados. Elas precisam passar pela camada de controllers, onde fica a lógica de negócio. Pular o controller quebra a separação de responsabilidades do padrão MVC.