No meu último post tentei explicar como configurar o Hibernate 4. Agora vamos tentar entender o que está por tráz desta tecnologia. Vou tentar falar um pouco de JPA (Java Persistence API). Para ser mais preciso, vou escrever explicar o que é uma Entity, mas antes vamos definir JPA.
O que é o JPA?
A documentação diz que o JPA fornece / oferece aos desenvolvedores Java, uma forma de mapear os objetos-relacionais para gerenciar seus dados relacionais em aplicações Java.
O JPA é na verdade uma especificação utilizada para persistência de dados, faz parte da API e pode ser implementada por Frameworks, como o Hibernate, para seguir um padrão de persistência. Assim, se você criar seu mapeamento utilizando o JPA, será possível criar sua aplicação utilizando os Frameworks que o utilizam em sua implementação, tais como: Hibernate, EclipseLink e outros.
Entities
Uma entidade (Entity) é uma classe que irá representar uma tabela no banco de dados, ou seja, é a classe que vamos persistir. Cada instancia de uma Entity é uma linha da tabela.
As Entities apresentam campos (fields) ou propriedades (properties) que são usadas para mapeamento dos objetos-relacionais, que por anotações (annotations) definem esta entidade e seus relacionamentos.
A documentação do Java EE 6, diz que para ser uma Entity, a classe precisa:
- Ser anotada como javax.persistence.Entity;
- A classe deve ter um construtor sem argumentos;
- A classe, assim como os métodos ou instancias variáveis de persistências, não podem ser declaradas como “final”;
- Se uma classe é “passada” como valor em um objeto individual, ela deve ser implementada como “Serializable Interface”;
- Entities podem extender classes definidas ou não como Entities. Também é possível que classes que não são definidas como Entity extendam classes que são definidas como Entity;
- As variáveis que serão persistidas no banco de dados devem ser declaradas como “private”, “protected” ou “package-private” e podem ser acessadas diretamente por seus métodos (getters e setters);
Veja o exemplo de uma Entity chamada “Produto”:
@Entity
public class Produto implements {
@Id
private Long id;private String nome;
private String unidade;
private String descricao;
private boolean status;public Produto() {
super();
}
public Long getId() {
return this.id;
}public void setId(Long id) {
this.id = id;
}
public String getNome() {
return this.nome;
}public void setNome(String nome) {
this.nome = nome;
}
public String getUnidade() {
return this.unidade;
}public void setUnidade(String unidade) {
this.unidade = unidade;
}public String getDescricao() {
return this.descricao;
}public void setDescricao(String descricao) {
this.descricao = descricao;
}public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}}
No exemplo acima podemos ver que a Entity é nada mais que uma classe Java com suas propriedades e métodos que serão utilizadas pela aplicação.
As propriedades ou campos, podem ser declaradas como tipos primitivos, Strings ou outro tipo “Serializable” como:
- BigInteger;
- BigDecimal;
- Date;
- Calendar;
- byte[];
- outros;
Uma propriedade ou campo também pode usar “Collections” para definir seu tipo. Normalmente uma “Collection” é utilizada em relações entre Entities, como por exemplo uma classe de venda que contém uma listagem de itens para serem vendidos. Há outras formas de utilizar “Collections”, verificar documentação.
Uma resposta para “Java Persistence API – Entities”