
13 - Anotações (@Entity, @Table, @Id e @GeneratedValue)
Seguimos com nosso treinamento! Agora que já temos nosso modelo criado e a dependência do Spring Data JPA instalada, é hora de aprender sobre algumas anotações essenciais para trabalhar com persistência de dados.
Principais anotações JPA
Ao trabalhar com entidades no Spring Boot, utilizamos anotações que fazem parte da especificação JPA para indicar que uma classe representa uma tabela no banco de dados. Vamos conhecer as mais importantes:
@Entity
Essa anotação é utilizada para indicar que a classe é uma entidade JPA, ou seja, ela será mapeada para uma tabela no banco de dados.
@Entity
public class PessoaModelo {
// atributos e métodos
}
@Table
Opcionalmente, podemos utilizar a anotação @Table
para definir o nome da tabela no banco de dados. Caso não seja usada, o nome da tabela será igual ao nome da classe.
@Table(name = "pessoas")
@Id
A anotação @Id
serve para definir o campo que será a chave primária da entidade.
@Id
private int codigo;
@GeneratedValue
Essa anotação é usada em conjunto com o @Id
para indicar que o valor será gerado automaticamente, geralmente utilizando auto-incremento no banco de dados.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int codigo;
A anotação @GeneratedValue
é utilizada para indicar que o valor da chave primária será gerado automaticamente. Dentro dela, podemos configurar a estratégia de geração por meio da propriedade strategy
.
As estratégias disponíveis são:
- GenerationType.IDENTITY: Utiliza o recurso de auto-incremento do banco de dados. O valor é gerado diretamente pela base de dados no momento da inserção.
- GenerationType.AUTO: O JPA escolhe a melhor estratégia com base no banco de dados utilizado.
- GenerationType.SEQUENCE: Utiliza uma sequência específica do banco de dados para gerar os valores. Mais comum em bancos como PostgreSQL e Oracle.
- GenerationType.TABLE: Utiliza uma tabela auxiliar para simular a geração de valores, sendo mais genérica, mas menos performática.
Resumo
- @Entity: transforma a classe em uma entidade JPA.
- @Table: define o nome da tabela (opcional).
- @Id: identifica o campo como chave primária.
- @GeneratedValue: gera valores automáticos para a chave.
Essas anotações são essenciais para que o Spring reconheça a classe como uma entidade e possa mapear corretamente os dados entre o Java e o banco de dados.
Clique aqui para se tornar membro do canal
Abaixo segue nossa aula no YouTube: