Um pouco sobre JPA/Hibernate
- #JPA
- #Hibernate
- #Java
JPA (Java Persistence API) é uma especificação Java que fornece funcionalidades e padrões para implementação em ferramentas ORM (Object-relacional mapping).
ORM, de forma resumida, é uma forma simplificada de manipulação de dados, de um banco de dados relacional, através do paradigma de orientação a objetos.
Hibernate é uma dessas ferramentas ORM que o JPA implementa.
Ao criar um projeto JPA sempre será gerado um arquivo persistence.xml, através dele que será gerenciado o driver, usuário e senha do banco de dados que será utilizado pelo Hibernate. Nesse arquivo também é possível criar o banco de dados do zero, ou se já criado, atualizar ou deletar os dados.
O mapeamento entre ORM e o paradigma de orientação de objetos ocorre através de diversas anotações, que são inseridas acima do código, algumas anotações comuns:
@Entity - utilizada em classes, para informar que essa classe tratasse de uma entidade no banco de dados
@Table - usada também em classes, informando que será uma tabela no banco
@Column - adicionada em atributos de uma classe, onde esse atributo será uma coluna do banco
@Id - em conjunto com a anotação @Column, a anotação @Id diz que os dados dessa coluna serão os ids (chaves primárias no banco)
Exemplo:
@Entity
@Table
public class Cliente {
@Id
@Column
private Integer id;
@Column
private String nomeCliente;
}
Em cada anotação é possível utilizar "parâmetros" (não sei se é a nomenclatura correta rs, alguém corrige se necessário). Esses "parâmetros" são utilizados para, por exemplo, personalizar o nome de uma coluna ou tabela no banco de dados, podem ser utilizados para definir também o tamanho de uma coluna, se os dados poderão ser null ou não, entre outros.
Exemplo com "parâmetros":
@Entity
@Table(name = "tb_orm_cliente")
public class Cliente {
@Id
@Column(name = "id_cliente")
private Integer id;
@Column(name = "nm_cliente")
private String nomeCliente;
}
Os parâmetros são opcionais, caso não sejam inseridos, o Hibernate irá gerar por padrão algum valor para esses parâmetros, no caso do primeiro exemplo será inserido no banco o mesmo nome do atributo (id e nomeCliente), não padronizando o banco de dados, o que não é uma boa prática a ser seguida (em âmbito profissional).
Há diversas anotações também para tratar o relacionamento entre as tabelas que forem geradas.
E após a inserção das anotações necessárias, chega uma hora que é necessário testar se tudo que foi adicionado será inserido no banco através do Hibernate e aí entra em cena um outro cara chamado Entity Manager.
Entity Manager é uma interface responsável por realizar a conexão com o banco de dados através do que foi passado no arquivo persistence.xml e também realiza o CRUD (create, read, update and delete), ações de criação, consulta, atualização e deleção dos dados.
Abaixo alguns sites para saber mais sobre isso, para não estender mais por aqui, devido esse assunto ser bem amplo:
Relacionamento entre tabelas: https://www.devmedia.com.br/hibernate-mapping-mapeando-relacionamentos-entre-entidades/29445
Entity Manager: https://www.devmedia.com.br/introducao-ao-entitymanager/5206 e https://www.devmedia.com.br/definindo-entity-manager-na-java-persistence-api/28271
Espero que tenha conseguido entender um pouco mais sobre JPA/Hibernate, se tiver alguma dúvida, crítica ou correção, por favor deixe nos comentários.