Dúvida em inserção n para n

Galera, já fiz alguns sistemas simples e nunca tive problema quanto a inserções no banco de tal. Só que tem uma coisa que tá me encucando. Me meti a fazer um sistema de clinica médica. Minha dúvida é a seguinte

eu tenho a tabela médicos e tenho a tabela especialidades, ou seja um médico pode ter n especialidades e uma especialidade pode ter n médicos. Na hora do crud como eu faria esse inserção?

Tipo vou cadastrar o médico mas ele tem mais de uma especialidade e aí como faz?

não sei se foi muito claro. Qualquer coisa é só perguntar.

1 curtida

Imagine um objeto do tipo médico que contém uma lista do tipo especialidades médicas, ambos possuirão identificadores, com isso, basta fazer a inserção dos registros, não tem muito segredo!

Tô entendendo, mas ainda tá meio raso. Tipo na hora de criar a Classe eu já coloco que a Classe Médico tem uma lista de especialidades?

Sim!

Exemplo:

public class Especialidade {

    private Long id;
    private String descricao;

    //getters e setters

}

public class Medico {

    private Long id;
    private String nome;
    private List<Especialidade> especialidades;

    //getters e setters

}

Essa é uma das possibilidades, eu considero uma das mais simples, pode ser resolvido de outras formas, aí depende muito da questão: problema x solução x resultado esperado.

Certo e na hora de salvar isso no banco, eu teria que ter três tabelas, correto?
a de médico a de especialidades e a médico_tem_especialidades?
Eu teria que em algum momento recuperar esses id e jogar para a tabela medico_tem_especialidades

Isso, você terá que ter estes registros com o id carregado, desta forma você faz a inserção no DB com base nisso.

Você vai ver que ao longo do desenvolvimento as coisas começam a fazer sentido e se conectarem!

Mano, tu pode me indicar algum material que fale sobre isso? Ou me mostrar algum exemplo de uma inserção no bd dessa forma?

Tenho esse exemplo no meu github: https://github.com/jonathanmdr/pizzaria-api

É uma API básica de um pedido de pizzaria, onde tenho as tabelas: pizza, adicionais e pizza_adicionais.

O projeto é feito em Java com Spring, não sei como você está fazendo e o que está usando, se puder compartilhar seu código e como está montando tudo, fica mais fácil de te ajudar.

Eu ainda nem comecei a fazer. Mas já tô pensando nisso pq ainda não fiz nenhuma inserção desse tipo. Vou fazer no swing msm. O spring agora que to pegando as primeiras aulas. Como eu já fiz um outro sistema em swing e nele tem relatório, editar, salvar, excluir, tabelas, eu achei melhor fazer em swing pq pelo menos já sei um pouco de coisa.

Entendi, em Swing não um exemplo de código aberto para te mostrar, mas te recomendaria começar a fazer, vai montando as classes com calma e paciência e a medida em que você for travando vai compartilhando aqui onde você travou que a comunidade vai te auxiliando, não fique sofrendo por antecipação com essa implementação de inserção de registros em uma tabela N:N, as coisas vão começar a ficarem mais clarar à medida que você for avançando no desenvolvimento.