Trabalhando 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
EntityManagerfoi 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Trabalhando 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
EntityManagerfoi 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?
Obrigado pelo seu feedback!