JPA: Como usar a anotação @Id
Nesta documentação você aprenderá a utilizar a anotação @Id para informar qual campo de uma entidade representa a chave primária da respectiva tabela no banco de dados.
Ao mapearmos nossas classes às tabelas do banco de dados, um passo fundamental é definir qual campo dessa classe estará relacionado à chave primária da tabela. Assim como precisamos ter essa chave em toda tabela, precisamos de um campo equivalente em toda entidade.
Neste documento será apresentado como utilizar a anotação @Id.
@Id
A anotação I@Id é utilizada para informar ao JPA qual campo/atributo de uma entidade estará relacionado à chave primária da respectiva tabela no banco de dados. Essa é uma anotação obrigatória e um erro será gerado em tempo de execução caso ela não esteja presente.
A seguir temos um exemplo de uso:
@Entity
public class Produto {
@Id
private long id;
}
Com este código, a entidade Produto terá como identificador único o campo id, e esse campo estará relacionado à coluna de mesmo nome na tabela Produto, a qual representa a chave primária (primary key).
Caso a coluna possua um nome diferente (id_produto, por exemplo), devemos utilizar a anotação @Column sobre o respectivo campo da seguinte forma: @Column(name=”id_produto”).
Nota: A anotação @Id faz parte do pacote javax.persistence.O campo que representa a chave primária pode ser de qualquer tipo primitivo do Java, wrappers de tipos primitivos (como Integer e Long), String, java.util.Date, java.sql.Date, java.math.BigDecimal ou java.math.BigInteger.
Quando declaramos apenas essa anotação, a responsabilidade de criar o identificador será da nossa aplicação, isto é, do nosso código, o que, em muitos casos, não é indicado. Para que a geração de ids seja controlada pelo provedor de persistência (Hibernate, por exemplo), fazemos uso da anotação @GeneratedValue logo após @Id.
@Entity
public class Produto {
@Id
@GeneratedValue
private long id;
}
Com este código, o id da entidade Produto será gerenciado pelo provedor de persistência, que se comunicará com o banco de dados para geração do valor da chave primária.
Exemplo prático
Suponha que criamos a classe Pessoa e desejamos que CPF seja o campo responsável por identificar unicamente uma pessoa no sistema. Com isso em mente, podemos programar o código abaixo:
@Entity
public class Pessoa {
@Id
private String cpf;
private String nome;
//getters e setters omitidos...
}
Ao executar esse código, será criada uma tabela de nome Pessoa no banco de dados (caso não exista e assim seja configurado) com as colunas nome e cpf, sendo cpf a chave primária.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Vídeo