Java: Configurar Hibernate 3 con una base de datos MySql 5.5

Aquí les dejo un pequeño manual de como crear un proyecto en java en el cual configuraremos el framework Hibernate 3 para acceder a una base de datos MySql 5.5


Consideraciones:


1. El proyecto ha sido creado con Eclipse Helios
2. Se usa Hibernate 3 y MySql 5.5
4. Se usará JDK 6
3. Las librerías a utilizar son:


Para implementar Hibernate 3 (todas estas librerías las pueden descargar de www.hibernate.org)
  • antlr-2.7.6.jar
  • hibernate3.jar
  • commons-collections-3.1.jar
  • dom4j-1.6.1.jar
  • javassist-3.4.GA.jar
  • jta-1.1.jar
Para el logging:
  • slf4j-api-1.5.6.jar
  • slf4j-log4j12-1.5.6.jar
  • log4j-1.2.14.jar
Para la conexion con MySql:
  • mysql-connector-java-5.1.18-bin.jar

Las librerías deberán estar en una carpeta llamada lib dentro de la carpeta del proyecto.


Pasos a seguir, manos a la obra:


1. Crear un nuevo Java Project de nombre iadDemoHibernateMySQL: Click derecho en el explorador de proyectos luego seleccionar New -Other - Java - Java Project.


manual_hibernate_mysql_1

Datos del Java Project

manual_hibernate_mysql_2




2. Agregamos las librerías: Click derecho sobre el nombre del proyecto, seleccionamos Build Path - Configure Build Path). En la pestaña Librerias escogemos Add External JARs y agregamos las librerías mencionas en las consideraciones. 


manual_hibernate_mysql_3




3. Creamos el paquete com.imagineanddo.demo.persistence.hibernate y dentro de este creamos una clase cuyo método main nos servirá para validar que la configuración se realizó correctamente. Los demás archivos también se crearán dentro de estas misma carpeta
/**
 * 
 */
package com.imagineanddo.demo.persistence.hibernate;

import java.util.Date;
import java.util.List;

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.hibernate.Session;

/**
 * @author www.imagineanddo.com
 *
 */
public class DemoHibernateMySQL {

 /**
  * @param args
  */
 public static void main(String[] args) {
        BasicConfigurator.configure();
        Logger.getRootLogger().setLevel(Level.WARN);
        new DemoHibernateMySQL();
        HibernateUtil.getSessionFactory().close();
 }

 
    public DemoHibernateMySQL() {
     
     //CREO UN OBJETO EMPRESA Y LO INSERTO EN LA BD
     Empresa e1=new Empresa();
     e1.setStrNombre("MICROSOFT");
     e1.setStrEstado("1");
     int intidEmpresa1 = registraEmpresa(e1);
     
     //CREO UN OBJETO EMPRESA Y LO INSERTO EN LA BD
     Empresa e2=new Empresa();
     e2.setStrNombre("GOOGLE");
     e2.setStrEstado("1");
     int intidEmpresa2 = registraEmpresa(e2);

     //CREO UN OBJETO EMPRESA Y LO INSERTO EN LA BD
     Empresa e3=new Empresa();
     e3.setStrNombre("APPLE");
     e3.setStrEstado("0");
     int intidEmpresa3 = registraEmpresa(e3);

     //CREO UN OBJETO PERSONA Y LO INSERTO EN LA BD
     Persona p1=new Persona();
     p1.setStrNombres("JUAN CARLOS");
     p1.setStrApellidos("GUTIERRES PEREZ");
     p1.setIntEdad(28);
     Empresa emp=new Empresa();
     emp.setIntId(1);
     p1.setObjEmpresa(emp);
     p1.setStrEstado("1");
        int intIdPersona1 = registraPersona(p1);

     //CREO UN OBJETO PERSONA Y LO INSERTO EN LA BD        
     Persona p2=new Persona();
     p2.setStrNombres("MIGUEL ANGEL");
     p2.setStrApellidos("ESTRADA PINTO");
     p2.setIntEdad(23);
     Empresa emp2=new Empresa();
     emp2.setIntId(2);    
     p2.setObjEmpresa(emp2);
     p2.setStrEstado("1");
     int intIdPersona2 = registraPersona(p2);        
        
        listarPersonas();
    }

    private int registraEmpresa(Empresa e) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        session.save(e);
        session.getTransaction().commit();
        return e.getIntId();
    }

    private int registraPersona(Persona p) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        session.save(p);
        session.getTransaction().commit();
        return p.getIntId();
    }

    private List listarPersonas() {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List result = session.createQuery("from Persona").list();
        // Debe hacerse el listado antes del commit, puesto que el toString()
        // de Person consulta los Event asociados a la persona.
        for (Persona persona : result) {
            System.out.println("PERSONA : " +persona.getStrNombres()+" "+persona.getStrApellidos() + " / EMPRESA : " +persona.getObjEmpresa().getStrNombre());
         //System.out.println(persona.getStrNombres());
        }
        // Cierre de sesion
        session.getTransaction().commit();
        return result;
    }
 
}
4. Creamos las clases Persona y Empresa Persona.java
/**
 * 
 */
package com.imagineanddo.demo.persistence.hibernate;

/**
 * @author www.imagineanddo.com
 *
 */
public class Persona {
 private int intId;
 private String strNombres;
 private String strApellidos;
 private int intEdad;
 private int intIdEmpresa;
 private String strEstado;
 private Empresa objEmpresa;
 public int getIntId() {
  return intId;
 }
 public void setIntId(int intId) {
  this.intId = intId;
 }
 public String getStrNombres() {
  return strNombres;
 }
 public void setStrNombres(String strNombres) {
  this.strNombres = strNombres;
 }
 public String getStrApellidos() {
  return strApellidos;
 }
 public void setStrApellidos(String strApellidos) {
  this.strApellidos = strApellidos;
 }
 public int getIntEdad() {
  return intEdad;
 }
 public void setIntEdad(int intEdad) {
  this.intEdad = intEdad;
 }
 public String getStrEstado() {
  return strEstado;
 }
 public void setStrEstado(String strEstado) {
  this.strEstado = strEstado;
 }
 public int getIntIdEmpresa() {
  return intIdEmpresa;
 }
 public void setIntIdEmpresa(int intIdEmpresa) {
  this.intIdEmpresa = intIdEmpresa;
 }
 public Empresa getObjEmpresa() {
  return objEmpresa;
 }
 public void setObjEmpresa(Empresa objEmpresa) {
  this.objEmpresa = objEmpresa;
 }

}


Empresa.java
/**
 * 
 */
package com.imagineanddo.demo.persistence.hibernate;

/**
 * @author www.imagineanddo.com
 *
 */
public class Empresa {
 private int intId;
 private String strNombre;
 private String strEstado;
 
 public int getIntId() {
  return intId;
 }
 public void setIntId(int intId) {
  this.intId = intId;
 }
 public String getStrNombre() {
  return strNombre;
 }
 public void setStrNombre(String strNombre) {
  this.strNombre = strNombre;
 }
 public String getStrEstado() {
  return strEstado;
 }
 public void setStrEstado(String strEstado) {
  this.strEstado = strEstado;
 }
}

5. Creamos los mapeos de las clases Persona y Empresa
Persona.hbm.xml

 
  
   
  
  
  
  
  
  
 



Empresa.hbm.xml

 
  
   
  
  
  
 



6. Creamos el archivo de configuración de hibernate y la configuración de la conexión a mysql,





    
    
        
        com.mysql.jdbc.Driver
        jdbc:mysql://localhost/demo_hibernate_mysql
        demo
        12345678

        
        1

        
        org.hibernate.dialect.MySQLDialect

        thread

        org.hibernate.cache.NoCacheProvider

        
        false
        
        false
        
        

        create

        
        
        
    



7. Al final de crear los archivos el explorados de proyectos deberá verse así:

manual_hibernate_mysql_7


8. Para probar que todo esta correcto ejecutamos la clase DemoHibernateMySQL.java. Si todo esta correcto la consola deberá escribir el siguiente texto:

manual_hibernate_mysql_8



Las fuentes del proyecto las pueden descargar desde:

http://imagineanddo-demo-hibernate-mysql.googlecode.com/svn/trunk/
Si tienen dificultades para descargar de Google Code, aquí un manual de como pueden hacerlo:

http://www.imagineanddo.com/2011/10/informatica-descargar-proyectos-de.html

Publicar un comentario

Entradas populares de este blog

Java - Ejemplo de como consumir un Web Service

Java - Ejemplo de como crear un Web Service

Java: Primera aplicación web con Eclipse