O mapeamento objeto-relacional foi criado para abstrair as diferenças entre o modelo relacional e o paradigma orientado a objetos. Assim, deixa de ser necessário criarmos soluções com o intuito de converter dados em objetos e vice-versa. em Java, após a especificação JPA, isso passou a ser feito pelos frameworks que a implementam, como o Hibernate, EclipseLink e OpenJPA. A nós, desenvolvedores, basta fazer uso das anotações disponibilizadas pela JPA para viabilizar o mapeamento, evitando dessa forma criar uma forte dependência com alguma implementação.

Neste documento será apresentado como utilizar a anotação @Entity.

Tópicos

@Entity

A anotação @Entity é utilizada para informar que uma classe também é uma entidade. A partir disso, a JPA estabelecerá a ligação entre a entidade e uma tabela de mesmo nome no banco de dados, onde os dados de objetos desse tipo poderão ser persistidos.

Uma entidade representa, na Orientação a Objetos, uma tabela do banco de dados, e cada instância dessa entidade representa uma linha dessa tabela.

Caso a tabela possua um nome diferente, podemos estabelecer esse mapeamento com a anotação @Table, a qual será explorada em outra documentação.

Exemplo de uso:


@Entity
public class Produto {

}

Com este código, a classe Produto será uma entidade e terá uma tabela de mesmo nome no banco de dados. Objetos do tipo Produto, quando persistidos, terão seus dados armazenados nessa tabela.

Nota: A anotação @Entity faz parte do pacote javax.persistence.

A anotação @Entity ainda pode receber um parâmetro: name. Assim, ao invés de utilizar o nome da classe para referenciar a entidade no momento de criar uma consulta, por exemplo, você deverá referenciar o nome especificado nesse parâmetro.

Nota: Caso você implemente um construtor com parâmetros, lembre-se de implementar também um construtor sem parâmetros, para evitar erros em tempo de execução. Esse construtor é esperado pela implementação da JPA.

Exemplo de uso:


@Entity(nome=”EntidadeProduto”)
public class Produto {

}
Nota: Uma entidade, assim como seus métodos ou atributos não podem ser declarados como final.

Exemplo prático

Suponha que criamos a classe Pessoa e desejamos torná-la uma entidade, possibilitando que objetos desse tipo sejam persistidos. Para isso, deve-se anotá-la com @Entity.

Exemplo de uso:


@Entity
public class Pessoa {
  
  @Id
  private Long id;

  private String nome;

  //getters e setters omitidos...

}

Ao executar uma aplicação que tenha um código como esse, uma tabela de nome Pessoa será criada no banco de dados (caso não exista e assim seja configurado) e terá como colunas os campos id e nome.

Nota: A anotação @Id é uma anotação obrigatória e determina qual campo da entidade representa a chave primária da tabela no banco de dados. Falaremos sobre ela em outra documentação.