Hibernate Framework: Inserindo e listando dados em Java

Veja neste artigo uma aplicação de exemplo utilizando algumas das novidades do Hibernate 4. Veja como criar uma aplicação para inserir e listar dados em um banco de dados.

O Hibernate é um framework bastante utilizado e disseminado entre os desenvolvedores Java que nos possibilita armazenar e recuperar objetos através do Mapeamento Objeto-Relacional (Object-Relational Mapping - ORM). O Hibernate surgiu no ano de 2001 por iniciativa de Gavin King.

O novo Hibernate 4 foi lançado e trouxe diversas melhorias que facilitam e melhoram a vida dos desenvolvedores. Entre as novidades temos a introdução do ServiceRegistry que ele é uma nova forma do Hibernate gerenciar os seus serviços, pois Services são classes que oferecem muitas funcionalidades ao Hibernate como ClassLoader, ConnectionProvider (conexão com um BD), e muitas outras funcionalidades. Portanto, agora todos os serviços possuem uma interface, facilitando modificações pelo desenvolvedor na forma como o Hibernate realiza algumas funcionalidades. Dessa forma, nossas classes precisariam apenas implementar a interface de serviço do Hibernate. Também temos a introdução do Multi-Tenancy, melhorias na performance do Hibernate e diversas outras melhorias e adições que fazem do Hibernate um framework ainda melhor.

No restante do artigo criaremos uma simples aplicação Web que apenas lista e insere dados na base de dados trazendo algumas melhorias introduzas na recente versão do Hibernate.

Criando uma Aplicação com Hibernate 4

O Hibernate está disponível no SourceForge nos formatos ZIP e TGZ. Essa versão 4 contém os JARs necessários, documentação, código-fonte e outros utilitários. O download oficial está disponível no link http://sourceforge.net/projects/hibernate/files/hibernate4/.

Após fazer o download do Hibernate 4 descompacte os arquivos numa pasta para que possamos copiar os JARs da pasta lib/required.

A pasta lib/required contém todos os JARs requeridos pelo Hibernate. Todos os JARs presentes neste diretório devem ser incluídos no classpath do nosso projeto.

Dado que já baixamos o Hibernate e temos uma base de dados PostgreSQL 8.4 devidamente criado e com uma tabela chamada teste com três colunas: id (tipo: serial), nome (tipo: text), senha (tipo: text), e uma chave primária criada para id.

Abra o Eclipse e clique com o botão direito do mouse e clique em New e Other como indica a Figura 1.

Figura 1. Criando um novo projeto no Eclipse.

Selecione Web e depois Dynamic Web Project como indica a Figura 2.:

Figura 2. Criando um projeto Web.

Na próxima tela (Figura 3)configuramos o nome do projeto como TesteHibernate4, configuramos o Apache tomcat4 e por fim clicamos em Finish.

Figura 3. Configurando o projeto.

Com o projeto criado, agora crie um novo pacote clicando com o botão direito do mouse em cima de src e selecionando “new” e “package” (Figura 4).

Figura 4. Criando um novo pacote.

Configure o pacote como apresentado na Figura 5e clique em “finish”.

Figura 5. Configurando um pacote.

Clique com o botão direito do mouse em cima do pacote e selecione “new” e “class”. Dê o nome da classe de “TesteEntity” e coloque o código apresentado na Listagem 1.

Listagem 1. Classe de teste mapeada.

Package teste.hibernate; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="teste", schema="public") public class TesteEntity { @Id @GeneratedValue(generator="increment") @GenericGenerator(name="increment", strategy = "increment") private int id; @Column private String usuario; @Column private String senha; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsuario() { return usuario; } public void setUsuario(String usuario) { this.usuario = usuario; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } }

Dentro deste mesmo pacote criamos o arquivo hibernate.cfg.xml, conforme a Listagem 2.

Listagem 2. Arquivo de mapeamento do Hibernate.

<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration SYSTEM "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class" >org.postgresql.Driver</property> <property name="hibernate.connection.url" >jdbc:postgresql://localhost:5432/banco_teste </property> <property name="hibernate.connection.username" >userbd</property> <property name="hibernate.dialect"> org.hibernate.dialect.HSQLDialect</property> <property name="connection.password" >senhabd</property> <property name="show_sql">true </property> <mapping class="teste.hibernate.TesteEntity"/> </session-factory> </hibernate-configuration>

Agora devemos criar uma classe que irá inserir um dado no Banco de dados e consultar o dado inserido. Veja a Listagem 3.

Listagem 3. Inserindo dados e consultando na Base de Dados.

package teste.hibernate; import java.util.List; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; public class TesteHibernate { public void lista() { List<TesteEntity> list= null; Configuration conf = new Configuration(); conf.configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings (conf.getProperties()).buildServiceRegistry(); SessionFactory sessionFactory = conf.buildSessionFactory(serviceRegistry); Session session = sessionFactory.openSession(); try { session.beginTransaction(); list = session.createQuery ("select t from TesteEntity t").list(); session.getTransaction().commit(); for (TesteEntity teste : list) { System.out.println ("Usuario: " + teste.getUsuario()); } } catch ( HibernateException e ) { if ( session.getTransaction() != null ) session.getTransaction().rollback(); } finally { session.close(); } } public void insere() { Configuration conf = new Configuration(); conf.configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings (conf.getProperties()).buildServiceRegistry(); SessionFactory sessionFactory = conf.buildSessionFactory(serviceRegistry); Session session = sessionFactory.openSession(); try { session.beginTransaction(); TesteEntity t = new TesteEntity(); t.setSenha("teste senha"); t.setUsuario("teste user"); //salva usuario criado acima session.save(t); //comita a transacao session.getTransaction().commit(); } catch ( HibernateException e ) { if ( session.getTransaction() != null ) session.getTransaction().rollback(); } finally { session.close(); } } }

Por fim, a JSP apresentada na Listagem 4apenas chama os métodos criados anteriormente:

Listagem 4. Chamando os métodos criados

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="br.com.portaldoconteudo.teste.TesteHibernate"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Página de Teste com Hibernate 4</title> </head> <body> Teste de Inserção e Listagem de Dados no Console <br/><br/> <% TesteHibernate testeHibernate = new TesteHibernate(); testeHibernate.insere(); testeHibernate.lista(); %> </body> </html>

As informações serão exibidas no console do eclipse. Poderíamos ter feito com swing, porém como alguns leitores pediram um projeto Web para ver a distribuição dos arquivos e como criar um projeto web com o Hibernate fizemos um projeto dinâmico. No entanto, nada impede que o projeto seja desktop. Também poderemos incrementar o exemplo com a utilização de Servlets. Como você faria o código acima inserindo dados e depois solicitando uma listagem e exibindo esses dados na tela para o usuário? Fica como um exercício para o leitor e no próximo artigo traremos o exemplo com esses incrementos e com log e auditoria que também sofreram modificações no Hibernate 4.

Com isso, neste artigo vimos como criar uma aplicação web utilizando tomcat, eclipse e o novo Hibernate 4. Verificamos novidades como o ServiceRegistry que é a alteração mais profunda nesta versão do Hibernate. Também podemos verificar que não houve alterações nas regras de mapeamento e no arquivo de mapeamento que pode permanecer com a versão 3.0 sem causar problemas.

Bibliografia

[1]Hibernate - JBoss Community, disponível em www.hibernate.org/

[2]Documentação de Referência Hibernate, disponível em https://docs.jboss.org/hibernate/core/3.6/reference/pt-BR/html/index.htmlhttp://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html

[3] Introdução ao Hibernate, disponível em http://hibernate.javabeat.net/articles/2007/05/hibernate-orm-framework-introduction/

[4] Jeff Linwood and Dave Minter. An introduction to persistence using Hibernate 3.5, Second Edition. Apress.

[5] Steve Perkins. Hibernate Search by Example: Explore the Hibernate Search system and use its extraordinary search features in your own applications. Packt Publishing.

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

Artigos relacionados