Aplicação Hibernate - Dei-Isep

Propaganda
Aplicação Hibernate1 no NetBeans Hibernate é um framework que fornece ferramentas para efetuar o mapeamento objeto/relacional para Java. Mapeamento objeto/relacional é o processo de conversão bidirecional entre objetos e tabelas de um modelo relacional. Este projeto Hibernate1 mostra o suporte incluído no NetBeans para o framework Hibernate que inclui wizards para criar os ficheiros Hibernate necessários para configuração da aplicação e para o mapeamento dos objetos Java. Este projeto usa o servidor de base de dados incluído no NetBeans “Java DB” (também designado Derby). 1. Iniciar o servidor de base de dados Derby, criar uma base de dados (“DB1”) com uma tabela (“Pessoa”). 



NetBeans Iniciar o servidor de base de dados “Java DB” o separador Services o expandir Databases o bt dir. rato em “Java DB”, selecionar Start Server (se já foi iniciado estará desactivado). Criar a base de dados “DB1” o bt dir. rato em “Java DB”, selecionar Create Database…  Database Name: DB1  User Name: user1  Password: pass1  OK Criar a tabela “Pessoa” o Efetuar a ligação à base de dados “DB1”  expandir Drivers  bt dir. rato em “jdbc:derby://localhost:1527/DB1 [user1 on USER1]”, selecionar Connect… o Criar a tabela “Pessoa”  bt dir. rato em “jdbc:derby://localhost:1527/DB1 [user1 on USER1]”, selecionar Execute Command…  escrever na janela Source: create table pessoa (id int, nome VARCHAR(20))  bt dir. rato na janela Source, selecionar Run Statement… o Verificar a base de dados  Duplo clique em “jdbc:derby://localhost:1527/DB1 [user1 on USER1]”  Expandir USER1, Tables  bt dir. rato em Tables, selecionar Refresh  bt dir. rato na tabela Pessoa, selecionar View Data… (a tabela está vazia). Na janela Source surge a instrução “Select * From USER1.Pessoa” e abaixo a tabela com o resultado. o Nota ‐ comando para apagar a tabela pessoa: drop table pessoa 2. Criar a aplicação Hibernate1 para gravar objectos Pessoa na base de dados através do Hibernate 




Criar um projecto NetBeans o Files > New Project > Java, Java Application > Next  Project Name: Hibernate1  Finish Criar a classe “Pessoa” o bt dir. rato no package hibernate1, selecionar New > Java Class…  Class Name: Pessoa  Location: Source Packages  Package: hibernate1  Finish A classe tem de implementar o interface Serializable: public class Pessoa implements java.io.Serializable { . . . Escrever os campos de dados (variáveis de instância): private int id; private String nome; bt dir. rato na janela Source, em qualquer ponto do código da classe Pessoa, seleccionar Insert Code… o Constructor > Generate (gera construtor sem argumentos) o Constructor > marcar os 2 campos de dados > Generate o Getter and Setter… > marcar a classe Pessoa > Generate 
Adicionar suporte Hibernate ao Projeto. Para adicionar suporte Hibernate é necessário adicionar a biblioteca Hibernate ao projecto. O IDE NetBeans inclui a biblioteca Hibernate. Mas como vamos criar os ficheiros de configuração Hibernate usando wizards, o IDE automaticamente adicionará a biblioteca Hibernate ao projecto. No entanto esta biblioteca poderia ser adicionada clicando com o botão direito do rato no nó Libraries na janela Projects, seleccionando “Add Library” e depois seleccionando a biblioteca Hibernate na caixa de diálogo. Expandindo o nó Libraries na janela Projects podemos verificar que a biblioteca Hibernate ainda não foi adicionada. 
Criar o ficheiro de configuração Hibernate (hibernate.cgf.xml). Para cada aplicação devemos criara um ficheiro de configuração Hibernate com informação acerca da ligação à base de dados, mapeamento de recursos, e outras propriedades da ligação. Através do wizard selecionámos o objecto connection de ligação à base de dados a partir de uma lista de objectos connection registados no IDE. O IDE ao gerar o ficheiro de configuração adiciona automaticamente os detalhes da ligação e informação do dialeto com base no objecto connection seleccionado. O IDE também adiciona automaticamente a biblioteca Hibernate ao projecto. o bt dir. rato no nó Source Packages na janela Projects, selecionar New > Other… o seleccione Categories: Hibernate e File Types: Hibernate Configuration Wizard.  File Name: hibernate.cfg  Folder: src o
 Next Select Data Source:  Database Connection: jdbc:derby://localhost:1527/DB1 [user1 on USER1]  Database Dialect: org.hibernate.dialect.DerbyDialect  Finish 
Alterar o ficheiro de configuração Hibernate (hibernate.cgf.xml) para mostrar os comandos SQL gerados pelo Hibernate. o
o
o
o
o
o
Abrir o ficheiro hibernate.cfg.xml no modo Design. Expandir o nó Configuration Properties debaixo de Optional Properties Clicar no botão Add Seleccione a propriedade hibernate.show_sql e coloque o valor true. Ok. Gravar o ficheiro. O seguinte elemento é adicionado ao ficheiro hibernate.cfg.xml: <property name="hibernate.show_sql">true</property>

Criar o ficheiro de mapeamento para a classe Pessoa. Os dados de um objecto Pessoa vão constituir um registo da tabela Pessoa. Para mapear a classe Pessoa na tabela PESSOA podemos usar um ficheiro de mapeamento Hibernate ou anotações na classe Pessoa. O wizard Hibernate Mapping Wizard cria um ficheiro de mapeamento baseado na tabela da base de dados especificada. Um ficheiro de mapeamento pode conter informação de mapeamento de muitas classes, mas é uma boa prática ter um ficheiro de mapeamento separado para cada classe. o bt dir. rato no nó hibernate1 na janela Projects, selecionar New > Other… o seleccione Categories: Hibernate e File Types: Hibernate Mapping Wizard.  File Name: hibernate.hbm => Pessoa.hbm  Folder: src/hibernate1  Next o Select Mapping Class:  Class to Map:  Premir …  Escrever Pessoa  Selecionar a classe  Ok.  Class to Map: hibernate1.Pessoa  Configuration File: hibernate.cfg.xml  Database Table: PESSOA  Finish o
Mapeamento dos campos de dados da classe Pessoa nas colunas da tabela PESSOA. Alterar o elemento <class> de: <class name="hibernate1.Pessoa" table="PESSOA"/>
para <class name="hibernate1.Pessoa" table="PESSOA">
<id name="id" type="int">
<generator class="increment"/>
</id>
<property name="nome" column="nome" type="string"/>
</class>
Clicar no botão Validate XML e gravar as alterações. O IDE também adiciona automaticamente uma entrada para este recurso de mapeamento ao ficheiro hibernate.config.xml. o

<mapping resource="hibernate1/Pessoa.hbm.xml"/>

Criar o ficheiro auxiliar HibernateUtil.java. Para usar Hibernate é útil criar uma classe auxiliar para ter acesso a um objecto SessionFactory. O método configure() carrega o ficheiro de configuração hibernate.cfg.xml e constrói o objecto SessionFactory. o bt dir. rato no nó hibernate1 na janela Projects, selecionar New > Other… o seleccione Categories: Hibernate e File Types: HibernateUtil.Java, Next.  Class Name: NewHibernateUtil => HibernateUtil  Location: Source Packages  Finish Código gerado: package hibernate1;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
// Create the SessionFactory from standard
// config file (hibernate.cfg.xml).
sessionFactory =
new AnnotationConfiguration().configure().buildSessionFactory();
}
catch (Throwable ex) {
// Log the exception.
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}

Criar o método main() da classe de arranque Hibernate1. Classe Hibernate1.java: package hibernate1;
import
import
import
import
org.hibernate.HibernateException;
org.hibernate.Session;
org.hibernate.SessionFactory;
org.hibernate.Transaction;
public class Hibernate1 {
public static void main(String[] args) {
// Cria os objetos SessionFactory e Session
SessionFactory factory = HibernateUtil.getSessionFactory();
Session session = factory.openSession();
// Realiza as operações debaixo de uma transação
Transaction tx = null;
try {
tx = session.beginTransaction();
// Cria um objeto Pessoa e grava-o na base de dados – save()
Pessoa p1 = new Pessoa();
p1.setNome("Jorge Silva");
session.save(p1);
// Cria outro objeto Pessoa e grava-o
Pessoa p2 = new Pessoa();
p2.setNome("Isabel Araujo");
session.save(p2);
// Retribui os objetos Pessoa
Pessoa pessoa = (Pessoa) session.get(Pessoa.class, p1.getId());
System.out.println("Primeira pessoa = " + pessoa.getNome());
pessoa = (Pessoa) session.get(Pessoa.class, p2.getId());
System.out.println("Segunda pessoa = " + pessoa.getNome());
tx.commit();
tx = null;
} catch ( HibernateException e ) {
if ( tx != null ) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
}
}
Saída produzida:
Hibernate: select max(id) from PESSOA
Primeira pessoa = Jorge Silva
Segunda pessoa = Isabel Araujo
Hibernate: insert into PESSOA (nome, id) values (?, ?)
Hibernate: insert into PESSOA (nome, id) values (?, ?)
Download