Quer ter acesso a todos os cursos desse Guia?

Guia de Referência Hibernate

Neste Guia de Referência você encontrará cursos, devcasts e artigos que demonstram todos os recursos do Hibernate. Entre eles, é claro, como persistir dados em Java com o framework ORM mais utilizado pelos desenvolvedores.

Introdução ao Hibernate

Hibernate é o framework para persistência de dados mais utilizado em projetos Java. Sendo uma das primeiras opções a implementar o conceito de mapeamento objeto-relacional (ORM), em pouco tempo se tornou referência entre os desenvolvedores, tendo influenciado, inclusive, a criação da especificação JPA.

Mas afinal, o que é a JPA? JPA é a especificação do Java que dita como os frameworks ORM devem ser implementados. Ela foi criada com o intuito de padronizar essas soluções. Antes de sua criação existiam diversos frameworks e bibliotecas que abstraiam os desafios da persistência com ORM em Java.

O problema é que cada um fazia isso de uma maneira diferente, o que se tornava um grande problema caso fosse necessário migrar para outra tecnologia. Imagine que você optou por um framework e poucos meses depois a empresa que mantinha esse framework deixou de existir. O que fazer? Basicamente, reescrever sua camada de acesso a dados com uma tecnologia nova.

Isso era ruim não apenas para arquitetos e programadores, mas também para o Java. Como optar por uma tecnologia que nos leva a um problema como esse? A JPA, então, foi criada, dando origem à especificação, e o Hibernate passou a implementá-la, como podemos entender melhor nos seguintes cursos:

Primeiros passos no Hibernate

Para o mercado, não basta saber utilizar a API JDBC para persistir dados com Java. Conhecer a API JPA e pelo menos um framework que a implemente é fundamental. A JPA abstrai e simplifica o acesso a dados, tornando transparente ao programador muitas preocupações que ele possui quando lida apenas com a JDBC, entre elas, o mapeamento objeto relacional. Observe a Figura 1.

Arquitetura de aplicação Java com JPA
Figura 1. Arquitetura de aplicação Java com JPA

Para introduzi-lo à Java Persistence API, reunimos o material a seguir:

Tão ou mais importante que conhecer a JPA é conhecer uma implementação da mesma, como o Hibernate. É com a implementação que, de fato, programamos o acesso a dados de nossa aplicação. E com o Hibernate, podemos, ainda, persistir dados utilizando ou não os recursos da especificação (Figura 2). Para ter o primeiro contato com ele, acesse:

Formulário de Resultado
Figura 2. Persistência de dados com Hibernate

Configurando o Hibernate

Agora que você já teve o primeiro contato com o Hibernate, vamos começar a nos aprofundar em seus recursos. Com o intuito de manter uma sequência lógica, aprenderemos primeiro como configurá-lo.

Quando o configuramos em um projeto, estamos definindo a versão do framework que será utilizada, o banco de dados, os dados para acesso ao banco, entre outras informações. Acesse os posts abaixo para aprender como especificar essas informações:

Mapeamento Objeto-Relacional

Com o Hibernate configurado, o próximo passo é realizar o mapeamento das classes às tabelas do banco de dados. Nas primeiras versões isso era feito via XML. Recentemente, com a implementação das annotations, passou a ser feito também via anotações, o que, em pouco tempo, se tornou a opção preferida dos programadores.

Mapeando entidades

No geral, toda classe que possui relação com uma tabela é chamada de entidade. Mas, como fazemos esse mapeamento em Java, como estabelecemos a ligação entre uma classe e uma tabela (Figura 3)? Para saber como fazer isso, acesse os conteúdos a seguir. Vale ressaltar que esse é um dos pontos mais importantes para a persistência, portanto, saber como fazê-lo é fundamental.

Mapeamento Objeto-Relacional
Figura 3. Mapeamento Objeto-Relacional

Para que você conheça alguns problemas que podem ser evitados ao realizar o mapeamento objeto-relacional, preparamos o seguinte conteúdo:

Mapeando relacionamentos

Com as entidades configuradas, as tabelas e colunas definidas, é fundamental também saber como mapear os relacionamentos entre elas. Como declarar em uma classe que um atributo representa a chave estrangeira de uma tabela, como declarar um relacionamento um para um, um para muitos? É sobre esses e outros assuntos que vamos explorar nos posts abaixo:

Outros recursos básicos

Para o correto uso do framework ORM é necessário conhecer outros recursos do mesmo. Nesta seção reunimos alguns deles, como é o caso da Session, interface fundamental do Hibernate para o acesso e persistência de dados.

Para aprender sobre ela, acesse:

Também é recomendado aprender sobre recursos como cascade e lazy e eager loading. As diferentes opções de cascade permitem ao programador definir a melhor forma como um conjunto de dados relacionados (envolvendo pelo menos duas entidades) deve ser salvo, atualizado ou removido.

Quando lidamos com listagens muito grandes, por exemplo, é uma boa prática considerar a melhor maneira como esses dados devem ser recuperados do banco de dados. Com as opções lazy e eager especificamos se todos os dados devem ser obtidos de uma vez ou conforme a demanda do usuário. Esse assunto é explorado nos posts:

Além desses, também preparamos mais alguns conteúdos para que você compreenda o funcionamento do framework e, a partir disso, saiba como melhor explorar seus recursos.

Consultas no Hibernate

Outra importante tarefa que precisamos tratar quando o assunto é persistência de dados é a forma como os dados são consultados. O Hibernate, em conjunto com a JPA, oferece várias opções para isso, do mais baixo ao mais alto nível de abstração.

Os cursos, devcasts e artigos abaixo ensinam como utilizar as principais ferramentas de consulta definidas pela JPA, assim como a soluções criadas pelo framework analisado nesse guia:

JPA

Uma das primeiras opções quando o assunto é consulta a dados é a Java Persistence Query Language, ou JPQL, a qual é introduzida no seguinte vídeo:

Hibernate

No Hibernate, a JPQL foi implementada e renomeada para HQL. Para aprender sobre ela, preparamos os posts abaixo:

Outra solução criada na JPA e implementada pelo Hibernate é a Criteria API. Com essa API podemos criar consultas de forma programática e orientada a objetos, isto mesmo, nós criamos as consultas chamando métodos encadeados. Para conhecê-la, acesse:

Caso você tenha interesse em ter uma visão geral sobre todas essas opções, assim como criar consultas no Hibernate utilizando código SQL (sim, isso é possível, e recomendado algumas vezes), confira os seguintes posts:

Por fim, recentemente, dada a importância que as consultas e o acesso a dados ganharam nessa nova era da informação, o Hibernate criou mais um mecanismo para tal, muito mais robusto e maduro para as necessidade do mercado: o Hibernate Search. Nos posts abaixo exploramos esse assunto:

Na prática

O próximo passo é pôr as mãos na massa com o framework. Com o intuito de auxiliá-lo nesta etapa, o material publicado nos links a seguir pode ser consumido. Você aprenderá como utilizar todos os recursos vistos até aqui e ao final terá não apenas classes mapeadas, mas também CRUDs completos e tudo aquilo que você precisa para criar a camada de acesso a dados.

Lembre-se que ao programar com Hibernate muitas classes e interfaces da JPA estão incluídas. Por isso, em muitos posts você encontrará referências a ambos (especificação e implementação).

Lembre-se também que o desenvolvimento de uma aplicação não se limita à camada de acesso a dados. Deste modo, é comum integrarmos o Hibernate/JPA a outras tecnologias, como exposto nos conteúdos a seguir:

Jersey/Web services

JSF/PrimeFaces

Spring

Validação de dados

Antes de persistir um dado é muito importante validá-lo. Por mais simples que seja um formulário, por exemplo, é comum que usuários preencham algum campo de forma incorreta. A validação possibilita um controle a essa entrada de dados e, com isso, evita problemas caso o dado precise ser processado ou mesmo exibido em um relatório.

Sobre esse assunto muitos programadores se perguntam: O que é melhor? Validar no back-end ou no front-end? Para abordar esse assunto gravamos os seguintes DevCasts:

Nesse contexto o Hibernate disponibiliza o Hibernate Validator, implementação de referência da especificação Bean Validation. Com Bean Validation a análise dos dados é feita nas classes de domínio, e com isso deixa de ser necessário validar dados no back-end e no front-end.

Para aprender sobre o Hibernate Validator, acesse:

Cache

Em algum momento pode ser que a sua aplicação comece a apresentar perda de performance. Um dos motivos para isso pode ser o acesso ao banco de dados. Para contornar situações como essa, uma opção é utilizar Cache, isto é, um mecanismo que mantenha os dados mais acessados, por exemplo, mais próximos da aplicação, de forma a reduzir o acesso ao banco e todo o tempo e recursos gastos com isso (Figura 4).

Cache de dados com Hibernate
Figura 4. Cache de dados com Hibernate

Os posts a seguir apresentam tudo o que você precisa para implementar cache com Hibernate:

Auditoria

O Hibernate também oferece uma solução completa para auditoria de dados, o Hibernate Envers. Com essa solução a auditoria pode ser feita dentro da aplicação e não mais no banco de dados, provendo assim uma maneira menos dependente do banco para observar como os dados e funcionalidades da aplicação estão sendo acessados e manipulados, se está ocorrendo acesso indevido, entre outras possibilidades (Figura 5).

Auditoria de dados com Hibernate Envers
Figura 5. Auditoria de dados com Hibernate Envers

Os posts abaixo apresentam o projeto Envers na teoria e na prática:

Documentação

Como material de referência sobre os recursos do Hibernate, preparamos as documentações a seguir. Utilize-as para consulta rápida:

Conteúdo Extra

Quando estiver programando com o Hibernate, é comum que você se depare com outros detalhes. Neste tópico separamos um conteúdo adicional que pode servir de apoio nessas ocasiões, por exemplo:

Algo comum e que pode gerar problemas ao software devido à quantidade de opções/formatos são as datas. Para auxiliá-lo na manipulação de datas em seus sistemas, preparamos os posts:

Caso você esteja em dúvida e precisa decidir entre um banco de dados relacional e um não relacional (NoSQL), os posts abaixo abordam os pontos que você deve considerar, tratando também da solução não relacional do Hibernate:

Por fim, vale ressaltar que o Hibernate também oferece opções para quem está planejando migrar seus dados para a nuvem. Para se aprofundar neste assunto, confira os posts abaixo:

Como você pôde verificar, o Hibernate é muito mais que um framework ORM. Ele é um projeto que, além de implementar a JPA, fornece um maduro e robusto conjunto de tecnologias que viabilizam um controle completo sobre os dados da sua aplicação.

Saiba mais: JDBC

JDBC é a API base para acesso a dados em Java. É com ela que o programador Java começará a escrever seus primeiros comandos SQL, bem como acessar diferentes bancos de dados, sem precisar de uma API específica para cada um deles. Sendo assim, mesmo quando utilizamos um framework de alto nível, a JDBC está presente.

Para saber mais sobre a JDBC, acesse:

Mais sobre Java

Além dos cursos e exemplos sugeridos nesse guia, a DevMedia publica com frequência novos conteúdos sobre Java, os quais você pode conferir nos Guias de Consulta abaixo:

Além disso, você pode conferir todo o conteúdo de Java clicando aqui.

Veja esse ebook
Crie sua conta grátis e baixe o e-book
Dê um upgrade no início da sua jornada.

Perguntas frequentes

Quem somos?
A DevMedia é uma escola de formação de programadores com mais de 20 anos de mercado. Já formamos mais de 100 mil programadores. A DevMedia ensina programação web, (desenvolvimento de site e aplicativos para celulares). A programação web é a área que mais contrata programadores em todo o mundo, sendo a maior porta de entrada para a área da tecnologia.
Por que a programação se tornou a profissão mais promissora da atualidade?
Nunca o mundo necessitou tanto de programadores como atualmente. Com a quarentena estabelecida pela Covid-19, lojas, restaurantes, escritórios e escolas, que tiveram suas atividades paralisadas, perceberam a urgente necessidade de adaptar seus negócios para o mundo digital. Em contrapartida as empresas de tecnologias, durante esse período, cresceram como nunca tanto em faturamento quanto em número de usuários. Com isso a necessidade de programadores cresceu muito. Empresas de grande e pequeno porte estão com vagas abertas e não conseguem contratar por falta de profissionais qualificados. No momento estima-se que o número de oportunidades no Brasil seja acima de 200 mil!
Como faço para começar a estudar?
Programação é um universo amplo, existem muitos caminhos e por isso é muito fácil se perder. Nosso conselho é: NÃO ESTUDE SOZINHO. Infelizmente 78% das pessoas que começam a estudar sozinhas desistem da profissão por não conseguirem aprender. Com uma boa orientação elas teriam conseguido! Se você tomou a decisão de entrar nesse mercado, faça um investimento no seu futuro e busque aprender com quem sabe. Isso vai triplicar suas chances de dominar a programação e conquistar uma vaga no mercado.
Em quanto tempo de estudo vou me tornar um programador?
O tempo depende, claro, da dedicação de cada estudante. A DevMedia ensina programação há 20 anos e com toda essa experiência montamos uma metodologia que tem como objetivo principal acelerar os seus estudos. Você terá um Plano de Estudo para te orientar em todos os passos do aprendizado. Desenvolverá diversos projetos reais para colocar em prática os conhecimentos e contará com o melhor suporte ao aluno da web. Todas as suas dúvidas serão respondidas de imediato. Seguindo nossa metodologia e se dedicando, entre 6 meses e um ano você já estará programando.
Sim, você pode se tornar um programador e não precisa ter diploma de curso superior!
Ser programador é uma das maiores oportunidades que o Brasil oferece para quem não tem condições de fazer uma faculdade. Muitas empresas contratam sem fazer questão de diploma, o que importa para elas é que o candidato seja um bom técnico e consiga atender suas necessidades. Os salários iniciais para programadores são de R$2.500 mil, podendo chegar aos R$15 mil para aqueles que se dedicam. Com disciplina e um estudo correto, que não te faça perder tempo, é possível se tornar um programador em menos de um ano de estudo. Quando você já estiver empregado, aí sim você pode se aprimorar ainda mais fazendo uma faculdade na área.
O que eu irei aprender estudando pela DevMedia?
Nossas trilhas de estudo te permitem virar um programador Full Stack, que é aquele programador mais completo, ele domina o desenvolvimento Front-end, Back-end e Mobile. Você ficará apto para criar sistemas para computadores e aplicativos para celulares. Utilizamos como base a linguagem JavaScript que é a linguagem mais utilizada no mundo. Outra vantagem do JavaScript é a quantidade de oportunidades no mercado de trabalho. É sem dúvida a linguagem que mais possui vagas e a que mais dá oportunidade para os iniciantes.
Principais diferenciais da DevMedia
Suporte ao aluno - O aluno conta com a ajuda de professores para tirar dúvidas durante toda a jornada de ensino. As perguntas são respondidas em menos de uma hora por professores experientes e atuantes no mercado. Gamificação - A plataforma de ensino é divertida e motivante. É como se o aluno estivesse dentro de um game. Ele terá seu card pessoal, que poderá ser customizado utilizando as moedas que ele ganha quando acerta os exercícios. Ele poderá também trocar suas moedas por outros produtos dentro da plataforma. Além disso, seus acertos contam pontos no ranking mensal dos alunos. Tudo isso deixa os estudos mais leves e motivantes. Didática - A DevMedia já ensina programação há mais de 20 anos. Desenvolvemos ao longo desse tempo uma metodologia que ensina a programar de verdade, com menos aulas e mais prática, são dezenas de projetos e exercícios que desenvolvem a mente programadora no aluno. Projetos reais - Durante os estudos os alunos irão desenvolver dezenas de projetos em cada uma das carreira (front-end, back-end e mobile). Mas o principal é que os projetos da DevMedia não são “copia e cola” como se encontra por aí. Aqui o aluno vai desenvolver os projetos de forma autônoma, recebendo claro a nossa mentoria e suporte, mas o aluno terá condições para desenvolvê-los sozinho. Milhares de exercícios - Programação é prática, por isso a cada nova matéria o aluno passará por um bloco de exercícios para fixar o conteúdo e cada acerto será bonificado com pontos e moedas e valem uma posição no ranking dos alunos.
Qual o investimento financeiro que preciso fazer para me tornar um programador?
Na internet é possível encontrar cursos de todos os preços, desde 50,00 a R$15.000,00. Os cursos de 50,00 são cursos avulsos, que explicam apenas pedaços de uma determinada matéria. Para criar um conhecimento completo você precisaria comprar no mínimo de 15 a 20 cursos avulsos e correria o risco deles não se complementarem tão perfeitamente e seu conhecimento ficaria cheio de "buracos". Os cursos de R$15.000,00 não fazem nenhum sentido. Deixe para investir em cursos caros quando quiser se especializar. Por esse preço você pode inclusive estudar fora do pais. Na DevMedia, você terá um plano de estudo montado por quem já formou mais de 100 mil alunos, e já está nesse mercado há mais de 20 anos. Somos a única plataforma que oferece Suporte ao Aluno em tempo real e uma experiência de estudos gamificada para te manter motivado durante todo o período de estudo. E o melhor, nosso pagamento é recorrente, você não precisa usar o limite do seu cartão de crédito para investir no seu futuro. Aproveite para se matricular agora mesmo.

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar