Fala Vinicius, tudo certo?
Perfeito, essas anotações servem para que não precisemos criar os construtores, o próprio Lombok faz isso pra gente!
A anotação @NoArgsConstructor cria para a gente aquele construtor padrão, que não recebe nenhum argumento
public Medico(){}
Assim, garantimos que nossa classe tenha esse construtor, que a JPA exige que mantenhamos nas nossas entidades, para manipulação da classe via JPA.
E a anotação @AllArgsConstructor cria um construtor que recebe como parâmetros todos os atributos da classe:
public Medico(String nome,String email, String crm, Especialidade especialidade, Endereco endereco){
this.nome = nome;
this.email = email;
this.crm = crm;
this.especialidade = especialidade;
this.endereco = endereco;
}
Ou seja, funciona para inicializarmos o objeto quando criarmos uma instância da classe. Note que o atributo Long id
não entra nesse construtor, pois ele é administrado pelo banco de dados via anotação @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
;
No entanto, quando precisamos de algum outro construtor, é necessário ainda escrevê-lo manualmente. Elas servem apenas para eliminar a necessidade dos contrutores citados! Para entender mais, sugiro a leitura da documentação do Lombok sobre construtores, que está em inglês mas caso seja necessário voce pode utilizar a ferramenta de tradução do seu navegador para facilitar o entendimento!
Fico à disposição.
Um grande abraço e bons estudos!