Essa é uma Arquitetura em MVC, porém com algumas camadas a mais.
Por padrão sigo com as camadas padronizadas da comunidade. Não reinvento a roda, apenas reaproveito o que já funciona, está maduro e de acordo com a comunidade.
Regras de desenvolvimento e arquiteturas
- Camadas (MVC com algumas camadas a mais):
- Controller:
- Controller é a camada que recebe e retorna dados apenas;
- A controller deve se comunicar apenas com a Service dela (instancia de apenas 1 service).
- Não deve conter regras de negócio e deve retornar apenas um tipo. As regras ficam na service.
- Service:
- Service é a camada onde ficam as regras de negócio.
- A service não se comunica com outras repositóries, ela se comunica apenas com a repository dela.
- Service se comunica com outras services mas apenas com a repository dela.
- Não deve conter queries, seja nativa ou JPQL, isso é responsabilidade da repository dela.
- Repository:
- Não deve conter Scripts SQL Nativo, se for algo complexo, deve-se criar uma view para o mesmo;
- Repository não contem regras de negócio, contém apenas scripts em JPQL;
- Model:
- Model é a representação das tabelas em objetos apenas;
- DTOs (Data Transfer Object): São contratos de entrada e saída, onde customizamos os objetos conforme a necessidade da Controller;
- Controller: