image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Matheus Coimbra
Matheus Coimbra27/09/2022 10:32
Compartilhe

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.

Compartilhe
Comentários (5)

DP

Diva Prates - 09/07/2023 11:40

Muito bom! Valeu!

Joana Leoni
Joana Leoni - 15/01/2023 00:20

Muito bom! 💻

Laio Silva
Laio Silva - 29/09/2022 21:54

Olá, tudo bom?

Qual sua visão sobre qualidade?

Por favor, posso contar com seu voto no artigo abaixo?


DIO | Codifique o seu futuro global agora

Desde já, te agradeço!

Matheus Coimbra
Matheus Coimbra - 27/09/2022 14:32

Valeu Allyson!

Allyson Santos
Allyson Santos - 27/09/2022 12:20

Muito bom, Matheus

Parabéns!