Relacional

ManyToOne

Explorando a relação entre classes e entidades

Explicação

A anotação @ManyToOne do JPA (Java Persistence API) é utilizada para mapear um relacionamento de muitos para um entre duas entidades. Esse tipo de relacionamento significa que várias instâncias de uma entidade (muitos) podem estar associadas a uma única instância de outra entidade (um).

@ManyToOne

Exemplo

Vamos imaginar que sua empresa ofereça um pacote de serviços com desconto para todos os clientes que atuam nas profissões de: Enfermeiro(a), Dentista e Veterinário(a). Para que haja uma melhor integridade quanto aos dados cadastrais de seus clientes, é melhor existir as tabelas profissão e cliente respectivamente.

Logo, é importante ser possível selecinar todos os clientes associados à determinadas profissões em nosso sistema tanto via banco de dados quanto com JPA.


import jakarta.persistence.Id;
import jakarta.persistence.Entity;

@Entity
public class Profissao {
    @Id
    private Integer id;
    private String nome;
}

@JoinColumn

A @JoinColumn define como o relacionamento entre as tabelas será feito, ou seja, qual será a coluna responsável por armazenar a referência a profissão, exemplo: Se em seu banco de dados a coluna profisssao existente na tabela cliente recebe o nome de profissao_id, é necessário utilizar a anotação JoinColumn.

@JoinColumn

Cliente.java

@Entity
public class Cliente {
    //...
    @ManyToOne
    @JoinColumn(name = "profissao_id")
    private Profissao profissao;
}
Neste contexto, o JPA permitirá que vários clientes possam exercer a mesma profissão, logo a profissão precisará exisitir previamente em nossa base de dados.