Hibernate - Segunda Parte: configuração e utilização

Dezembro 2016


Veja a primeira parte da dica Hibernate - Primeira Parte: Apresentação

Configuração do Hibernate em uma aplicação JAVA

  • Instalar JDK 1.4 ou JDK 1.5
  • Baixar a versão 3 a partir do [www.hibernate.org]
  • Referenciar os jars Hibernate no classpath.
    • Definir o arquivo de configuração Hibernate hibernate.cfg.xml :

Este arquivo deve ser colocado no diretório que contém o código fonte (fonte JAVA) da aplicação JAVA.
Abaixo, um exemplo do arquivo hibernate.cfg.xml com os comentários necessários:

<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE hibernate-configuration  
    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"  
    "[http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  

<hibernate-configuration>  

  <session-factory>  
      
  <property name="hibernate.connection.url">jdbc:oracle:thin:@dbServer:1521:db</property>   
  <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>  
         <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>  
  <property name="hibernate.connection.username">dbusername</property>  
  <property name="hibernate.connection.password">dbpassword</property>  
    
      
  <!-- Configuração hibernate -->  
          <property name="show_sql">true</property>  
  <property name="format_sql">true</property>    
          <property name="hibernate.use_outer_join">true</property>  
  <property name="hibernate.query.substitutions">1</property>  
  <property name="hibernate.connection.autocommit">false</property>  
  <property name="hibernate.jdbc.batch_size">50</property>  
  <property name="hibernate.jdbc.use_get_generated_keys">true</property>  

    
  <!-- Pool de conexão: aqui C3P0 que é declarado -->  
  <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>  
  <property name="hibernate.c3p0.acquire_increment">3</property>   
  <property name="hibernate.c3p0.idle_test_period">180</property>   
  <property name="hibernate.c3p0.max_size">100</property>   
  <property name="hibernate.c3p0.min_size">10</property>   
  <property name="hibernate.c3p0.timeout">1000</property>  
    
   <!--desativar o cache do segundo nível -->  
  <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>  
    
  <!--Lista dos arquivos do Mapping hbm -->  
  <mapping resource="com/org/client/mapping/Client.hbm.xml"/>  
    
    
 </session-factory>  
  </hibernate-configuration>
  • Definir os arquivos de mapping hbm:

Este é um conjunto de arquivos que faz o mapeamento entre a entidade do banco de dados e o objeto Java de persistência associado.
Os caminhos completos de todos os arquivos de mapeamento hbm estão descritas no arquivo de configuração hibernate.cfg.xml. (Veja o exemplo do arquivo de configuração acima).

Utilização do Hibernate em uma aplicação JAVA :


No exemplo de utilização, vamos nos basear exemplo do arquivo de configuração Hibernate acima.
  • Declaração da tabela (Oracle) :


CREATE TABLE CLIENT  
(  
   ID_Cliente NUMBER(10) NOT NULL,  
   TITRE VARCHAR2(10),  
   NOM VARCHAR2(30),     
   REMISE NUMBER(19,5),  
   CA NUMBER(19,5),  
   CONSTRAINT PK_CLIENT PRIMARY KEY (CLIENT_ID)  
);
  • Declaração das classes JAVA de persistência:

/** construtor padrão */  

public Client() {
}

/** Construtor completo **/
public Client(Long clientId, String titre, String nom, BigDecimal remise, BigDecimal ca)
{
this.idClient = idCliente;
this.titre = título;
this.name = nome;
this.remise = entrega;
this.ca = ca;
}

/** Os getters e os setters**/
public Long getIdClient()
{
return this.clientId;
}
public void setIdClient (Long clientId) {
this.clientId = clientId;
}
public String getTitre() {
return this.titre;
}
public void setTitre(String titre) {
this.titre = titre;
}
public String getNom() {
return this.nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public BigDecimal getRemise() {
return this.remise;
}
public void setRemise(BigDecimal remise) {
this.remise = remise;
}
public BigDecimal getCa() {
return this.ca;
}
public void setCa(BigDecimal ca) {
this.ca = ca;
}
}
  • Arquivo de Mapping Client.hbm.xml :


<?xml version="1.0"?>  
<!DOCTYPE hibernate-mapping PUBLIC  
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >  
      
<hibernate-mapping>  
<class   
    name="[Nome_Pacote].Cliente"   
    tabela="CLIENTE"  
         entity-name="Cliente"  
>   
    <meta attribute="class-description" inherit="false">  
       @hibernate.class  
        tabela ="CLIENTE"  
    </meta>  

    <id  
        name="idCliente"  
        type="java.lang.Long"  
        column="ID_CLIENTE"  
    >  
      <meta attribute="field-description" inherit="false">  
         Id do cliente  
      </meta>  
      
        <meta attribute="field-description">  
           @hibernate.id  
            generator-class="assigned"  
            type="java.lang.Long"  
            column="CLIENTE_ID"  

        </meta>  
        <generator class="increment" />  
    </id>  

    <property  
        name="titre"  
        type="java.lang.String"  
        column="TÍTULO"  
        length="10"  
    >  
      <meta attribute="field-description" inherit="false">  
         Título do cliente  
      </meta>  
        <meta attribute="field-description">  
           @hibernate.property  
            column="TÍTULO"  
            length="10"  
        </meta>      
    </property>  
    <property  
        name="name"  
        type="java.lang.String"  
        column="NAME"  
        length="30"  
    >  
      <meta attribute="field-description" inherit="false">  
         Nome do cliente  
      </meta>  
        <meta attribute="field-description">  
           @hibernate.property  
            column="NAME"  
            length="30"  
        </meta>      
    </property>  

    <property  
        name="remise"  
        type="java.math.BigDecimal"  
        column="REMISE"  
        length="19"  
    >  
      <meta attribute="field-description" inherit="false">  
         Entrega do cliente  
      </meta>  
        <meta attribute="field-description">  
           @hibernate.property  
            column="ENTREGA"  
            length="19"  
        </meta>      
    </property>  
    <property  
        name="ca"  
        type="java.math.BigDecimal"  
        column="CA"  
        length="19"  
    >  
      <meta attribute="field-description" inherit="false">  
         Resultado 
      </meta>  


</class>  
</hibernate-mapping>  

A chave primária é definida no tag <id>: no exemplo, ela se baseia em uma sequência. É possível definir uma chave composta, usando o tag <composite-id>:
 <composite-id>  
       <key-property name="atributo1"/>  
        <key-property name="atributo2"/>  
 </composite-id>
  • Salvando um novo objeto no banco de dados:


O exemplo abaixo utiliza o método saveOrUpdate() da sessão hibernate.
org.hibernate.Session sess = sessFact.openSession();  
Cliente c = new Client();  
c.setName("John");  
p.setTítulo("Mr");  
Transação tx = sess.beginTransaction();  
sess.saveOrUpdate(p);  
tx.commit();  
sess.close();



Tradução feita por Lucia Maurity y Nouira

Veja também :
Este documento, intitulado « Hibernate - Segunda Parte: configuração e utilização »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.