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;