Executando verificação de segurança...
2

oiii gente, sou Mateus tenho uma duvida

gente alguém entende aquelas APIS que são recursivas e ficam se repetindo infinitamente, esse era um problema que quando estava estudando APIs em JS eu não sentia, (não por conta do JS mas, por que eu não usava muitas relações em minhas antigas APIS eram mais simples, não abriam margem para isso ) atualmente estudando spring sempre me deparo com essas APIs que basicamente retornam a minha entidade e dentro entidade tem a outra entidade que fica retornando por vez a outra entidade... enfim é um response recursiva, enfim eu sei como resolver eu pesquisei e apenas coloco :

    @JsonBackReference

em uma entidade e

    @JsonManagedReference

na outra e isso "resolve", isso bem entre aspas amigos por que ai a entidade marcada com @JsonManagedReference não retornaria a marcada com @JsonBackReference (ou séria o oposto, eu me confundo ) ai eu crio um DTO para response (assim o problema está finalmente resolvido sem aspas ) mas eu queria entender essa recusividade, o por que deles se retornarem infinitamente.

Carregando publicação patrocinada...
1

Se eu compreendi bem o problema apresentado, o que você precisa pensar é que o problema tem uma característica circular, como assim? Uma situação circular acaba sempre retorna ao seu começo, assim como quando se anda em círculos.

Para deixar mais didático para você, vamos montar um exemplo que espero que torne mais claro como isso acaba acontecendo. Imagine um sistema de tarefas, nesse sistema cada tarefa pode ter apenas um um rótulo/categoria e cada rótulo pode estar associado a várias categorias, certo? Digamos que exista uma rota que ao ser acessada devolva um objeto json tarefa, esse objeto tem todas as informações que o sistema guarda sobre as tarefas, isso inclui seu rótulo, o que é esperado então é que esse objeto json tenha um campo/atributo rótulo, que será um outro objeto json, mas de um rótulo, também com todas as informações do sistema sobre os rótulos.

Exemplo de json da tarefa:

{
id: 1234,
titulo: "reuniao as 4 da tarde",
rotulo: {
 // Informações do rótulo
 },
...
}

Para construir esse objeto json de retorno, vamos precisar montar o de rótulo, correto? Já que existe uma relação e certa dependência entre eles dois, então quando esse outro objeto rótulo for ser montado, o que acontece se ele também tiver um campo que contém todas as tarefas que o tem como categoria? A tarefa que estamos tentando gerar para retornar vai precisar ser montada dentro desse campo de tarefas, e ai voltamos ao problema inicial, montar a tarefa de resposta.

Deu para entender? Ficou alguma dúvida? Qualquer coisa fique a vontade para perguntar

2