Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Trabalhando com ORM: JPA e Hibernate | Trabalhando com Bancos de Dados
Spring Boot Backend

bookTrabalhando com ORM: JPA e Hibernate

Como você já sabe, o mapeamento objeto-relacional (ORM) é uma tecnologia que permite aos desenvolvedores interagir com um banco de dados em nível de objeto ao invés de utilizar consultas SQL.

Em essência, ORM é um conceito que possibilita que um objeto Java seja representado como dados em um banco de dados (e vice-versa). Ele é implementado na forma da especificação Java Persistence API (JPA).

JPA

Exemplo da vida real

Imagine que o JPA é como um padrão para tomadas elétricas em diferentes países. Esse padrão define como uma tomada deve ser e quais especificações ela deve seguir para que dispositivos possam ser conectados a ela.

No entanto, o próprio padrão não fabrica as tomadas. Para realmente utilizá-las, você precisa de fabricantes que implementem esse padrão. Eles criam as tomadas reais que estão em conformidade com ele.

Principais Componentes do JPA

Componentes JPA são elementos-chave que trabalham juntos para fornecer funcionalidade na interação com um banco de dados.

Exploraremos esses componentes por meio de exemplos práticos para ajudar você a associá-los melhor para uso futuro.

Entidade

Vamos relembrar o que é uma entidade. Uma entidade é uma classe no seu código que representa uma tabela no banco de dados. Por exemplo, a classe User descreve quais dados relacionados ao usuário são armazenados.

Imagine como um cartão de visita. O cartão contém o nome, cargo e informações de contato de uma pessoa. No JPA, uma classe de entidade descreve todas as características importantes de um objeto, assim como um cartão de visita descreve uma pessoa.

EntityManager

No JPA, o EntityManager executa operações como adicionar, atualizar ou excluir registros, gerenciando todas essas ações.

O EntityManager é responsável por gerenciar o ciclo de vida das entidades (objetos) e sua interação com o banco de dados.

Principais métodos

Como utilizar o EntityManager no Spring Boot

Contexto de Persistência

Ciclo de Vida das Entidades

  • Transiente: A entidade foi criada recentemente, mas ainda não foi salva no banco de dados;
  • Gerenciada: A entidade foi salva no banco de dados e está sendo gerenciada pelo EntityManager. Todas as alterações nela são acompanhadas automaticamente;
  • Desanexada: A entidade foi gerenciada anteriormente, mas o contexto de persistência foi fechado ou o EntityManager foi limpo. Alterações nesse estado não são acompanhadas automaticamente;
  • Removida: A entidade foi marcada para remoção do banco de dados.

Quando o EntityManager cria ou encontra uma entidade, ele coloca essa entidade no contexto de persistência.

Todas as alterações feitas na entidade gerenciada são automaticamente rastreadas e, ao finalizar a transação, essas alterações são sincronizadas com o banco de dados.

JPQL (Java Persistence Query Language)

Em JPQL, são escritas consultas para localizar ou modificar dados no banco de dados utilizando um estilo orientado a objetos.

SELECT c from Category c WHERE c.title = 'query'

No JPQL, não lidamos diretamente com os nomes das tabelas e colunas. Em vez disso, referenciamos a classe Category e seu campo title, tornando a consulta mais fácil de compreender para desenvolvedores Java. O JPQL abstrai a estrutura subjacente do banco de dados, permitindo que você foque no modelo orientado a objetos.

Hibernate

Por exemplo, o Hibernate pode gerar e atualizar automaticamente as tabelas do banco de dados com base em suas entidades (classes).

O Hibernate incorpora mecanismos de cache que permitem que dados frequentemente utilizados sejam armazenados em memória, reduzindo o número de requisições ao banco de dados e aumentando o desempenho da aplicação.

1. O que é JPA?

2. Qual interface no JPA é utilizada para realizar operações em entidades?

question mark

O que é JPA?

Select the correct answer

question mark

Qual interface no JPA é utilizada para realizar operações em entidades?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

What are the main differences between JPA and Hibernate?

Can you explain more about how the EntityManager works?

How does JPQL differ from regular SQL?

Awesome!

Completion rate improved to 3.45

bookTrabalhando com ORM: JPA e Hibernate

Deslize para mostrar o menu

Como você já sabe, o mapeamento objeto-relacional (ORM) é uma tecnologia que permite aos desenvolvedores interagir com um banco de dados em nível de objeto ao invés de utilizar consultas SQL.

Em essência, ORM é um conceito que possibilita que um objeto Java seja representado como dados em um banco de dados (e vice-versa). Ele é implementado na forma da especificação Java Persistence API (JPA).

JPA

Exemplo da vida real

Imagine que o JPA é como um padrão para tomadas elétricas em diferentes países. Esse padrão define como uma tomada deve ser e quais especificações ela deve seguir para que dispositivos possam ser conectados a ela.

No entanto, o próprio padrão não fabrica as tomadas. Para realmente utilizá-las, você precisa de fabricantes que implementem esse padrão. Eles criam as tomadas reais que estão em conformidade com ele.

Principais Componentes do JPA

Componentes JPA são elementos-chave que trabalham juntos para fornecer funcionalidade na interação com um banco de dados.

Exploraremos esses componentes por meio de exemplos práticos para ajudar você a associá-los melhor para uso futuro.

Entidade

Vamos relembrar o que é uma entidade. Uma entidade é uma classe no seu código que representa uma tabela no banco de dados. Por exemplo, a classe User descreve quais dados relacionados ao usuário são armazenados.

Imagine como um cartão de visita. O cartão contém o nome, cargo e informações de contato de uma pessoa. No JPA, uma classe de entidade descreve todas as características importantes de um objeto, assim como um cartão de visita descreve uma pessoa.

EntityManager

No JPA, o EntityManager executa operações como adicionar, atualizar ou excluir registros, gerenciando todas essas ações.

O EntityManager é responsável por gerenciar o ciclo de vida das entidades (objetos) e sua interação com o banco de dados.

Principais métodos

Como utilizar o EntityManager no Spring Boot

Contexto de Persistência

Ciclo de Vida das Entidades

  • Transiente: A entidade foi criada recentemente, mas ainda não foi salva no banco de dados;
  • Gerenciada: A entidade foi salva no banco de dados e está sendo gerenciada pelo EntityManager. Todas as alterações nela são acompanhadas automaticamente;
  • Desanexada: A entidade foi gerenciada anteriormente, mas o contexto de persistência foi fechado ou o EntityManager foi limpo. Alterações nesse estado não são acompanhadas automaticamente;
  • Removida: A entidade foi marcada para remoção do banco de dados.

Quando o EntityManager cria ou encontra uma entidade, ele coloca essa entidade no contexto de persistência.

Todas as alterações feitas na entidade gerenciada são automaticamente rastreadas e, ao finalizar a transação, essas alterações são sincronizadas com o banco de dados.

JPQL (Java Persistence Query Language)

Em JPQL, são escritas consultas para localizar ou modificar dados no banco de dados utilizando um estilo orientado a objetos.

SELECT c from Category c WHERE c.title = 'query'

No JPQL, não lidamos diretamente com os nomes das tabelas e colunas. Em vez disso, referenciamos a classe Category e seu campo title, tornando a consulta mais fácil de compreender para desenvolvedores Java. O JPQL abstrai a estrutura subjacente do banco de dados, permitindo que você foque no modelo orientado a objetos.

Hibernate

Por exemplo, o Hibernate pode gerar e atualizar automaticamente as tabelas do banco de dados com base em suas entidades (classes).

O Hibernate incorpora mecanismos de cache que permitem que dados frequentemente utilizados sejam armazenados em memória, reduzindo o número de requisições ao banco de dados e aumentando o desempenho da aplicação.

1. O que é JPA?

2. Qual interface no JPA é utilizada para realizar operações em entidades?

question mark

O que é JPA?

Select the correct answer

question mark

Qual interface no JPA é utilizada para realizar operações em entidades?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4
some-alt