2
respostas

Salvar listas em OneToMany junto com a entidade ou salvando separadamente?

Bom dia galera,

digamos que eu tenho o seguinte relacionamento:

@Entity
public class Topico {
    @Id
    private Integer id;
    @Column
    private String descricao;
    @OneToMany(mappedBy="topico")
    private List<Comentario> comentarios;
}

@Entity
public class Comentario {
    @Id
    private Integer id;
    @Column
    private String descricao;
    @ManytoOne
    private Topico topico;
}

Qual é a melhor prática para salvar a entidade Topico com um alguns comentários de uma vez?

1 - Adicionando os comentários na lista em topico depois persistindo a entidade Topico?

2 - Ou salvando todos separadamente, primeiro Topico depois seus comentários?

Obrigado a todos.

2 respostas

Oi João, tudo bem?

Acredito que dependa muito da sua regra de negócio.

  • Se você persistir a entidade Topico juntamente com os seus comentários, você corre o risco de não persistir o Topico caso um comentário dê erro na hora de salvar;

  • Se você persistir o Topico primeiro e depois os comentários, você garante que o Topico será persistido mesmo sem comentários mas pode ser que no final ele fique sem nenhum caso ocorra erro.

O que você tem que pensar neste caso é no que vale para a sua regra de negócios: você pode ter um Topico sem comentários ou ele só pode ser criado se os comentários também forem criados?

Ficou um pouco mais claro?

Abraço!

Bom dia Joviane, tudo bem,

o exemplo de Topico e Comentarios foi só para ilustrar um possivel cenário. Minha dúvida mesmo é sobre qual será uma boa prática para uma situação como essa exemplo:

1 - Melhor eu salvar assim:

topico.addComentario(comentario);
topicoRepository.save(topico);

2 - Ou assim:

comentario.setTopico(topico);
comentarioRepository.save(comentario);