1
resposta

Dúvida de Estrutura - Spring Boot + Redis + MySQL

Pessoal, olha só:

Estou construindo uma aplicação Spring Boot + Redis + MySql. E daí as minhas camadas estão assim: Controller > Service > DAO. O DAO herda de um CRUDRepository pra evitar a fadiga.

A minha primeira dúvida é: Em qual camada eu coloco a minha regra de negócio? Geralmente eu criava uma camada "negocio" que possuía todas as regras e os "throw new Exception" e passava para o DAO, atualmente deixei no Controller e vi algumas pessoas sugerindo deixar no service. Onde vocês sugerem deixar a regra de negocio do serviço REST?

A segunda dúvida é a respeito dessas duas bases que estou preenchendo os dados: Redis e MySQL. Tenho duas listas, uma que busca do Redis e outra que busca do MySQL, ambas utilizam o mesmo Repository. Preciso ter 2 services do tipo: UserServiceRedis e UserServiceMySQL ou só crio um service e nele eu coloco os dois métodos getALLRedis() e getALLMySQL() ?

1 resposta

Olá Alex, com relação a primeira pergunta, regra de negócio é no Service. As DAO's são camada de integração (ou persistência), normalmente sem regras (ou com pequenas regras ligadas a persistência). Os controllers lidarão apenas com detalhes da camada HTTP e chamarão objetos da camada Service. De forma geral é isso, naturalmente existem outras abordagens mais complexas, mas com isso vc já irá longe.

Com relação a segunda pergunta, não é necessário ter 2 services, apenas 1 implementando a "regra de negócio" está ok (inclusive isso é mais indicado), o service pode injetar quantas DAO's forem necessárias para as implementações de regras negociais de sua responsabilidade.

Att.