CRUD
Atualizado
Bom, como pode ser visto acima a ideia nos tópicos seguintes é: inserir, atualizar e deletar
Como nosso ProductDto não possui uma Lista de categorias em sua entidade e nas variantes será necessário, iremos introduzir, veja:
Criar uma CategoryDTO com id e name, construtor + o construtor para converter de Category para CategoryDTO;
No ProductDto, introduzir uma Lista de categoryDTO (@NotEmpty) + get.;
No construtor de conversão de Product para DTO, iremos fazer um for padrão, para percorrer as Categories do Product e inserir na nossa do DTO.