Crear proyecto con maven 2 :
mvn archetype:create -DgroupId=com.ejemplo -DartifactId=hibernate
Generar los archivos necesarios para importar el proyecto a eclipse:
mvn eclipse:eclipse
Importar el proyecto desde eclipse : File –> Import –> General
Crear una carpeta resurces en src/main de tal forma que el path quede así: src/main/resources
Abrir el pom y agregar las dependencias de hibernate y mysql y además plugins para que compile con java 1.6, plugin de java doc y plugin de reportes.
El pom debería quedar así:
4.0.0 com.ejemplo hibernate 1.0-SNAPSHOT jar hibernate http://maven.apache.org UTF-8 maven-compiler-plugin 1.6 1.6 org.apache.maven.plugins maven-javadoc-plugin org.apache.maven.plugins maven-project-info-reports-plugin junit junit 4.8.2 test mysql mysql-connector-java 5.1.9 org.hibernate hibernate-core 3.6.3.Final javassist javassist 3.12.1.GA
Hacer mvn clean install y mvn eclipse:eclipse. Refrescar el proyecto en eclipse para que tome los cambios.
Generar clase y su mapeo:
Creeamos una clase persona:
package com.ejemplo; /** * @author emanuel * */ public class Persona { private Long id; private String nombre; private String apellido; public Persona(String nombre, String apellido) { super(); this.nombre = nombre; this.apellido = apellido; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellido() { return apellido; } public void setApellido(String apellido) { this.apellido = apellido; } //Constructor usado por hibernate protected Persona() { } }Ahora creamos el archivo de mapeo, el cual es un archivo .xml el cual es deseable (no obligatorio) que se llame igual que la clase que mapea y se encuentre en la carpeta resources con la estructura de paquete que tiene la clase, por lo tanto el path sería:
main/resources/com/ejemplo/persona.hbm.xml y el archivo sería como el siguiente:
Configurar hibernate:
Para configurar hibernate es necesario generar un archivo hibernate.cfg.xml y guardarlo en la carpeta resources. Este archivo contendra la siguiente información:
com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/prueba root update org.hibernate.dialect.MySQLDialect true
Crear HibernateUtil:
Ahora vamos a crear una clase util, la cual sera encargada de generar las sessiones de Hibernate:
package com.ejemplo.util; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { // Create the SessionFactory from hibernate.cfg.xml return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Make sure you log the exception, as it might be swallowed System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } public static void shutdown() { // Close caches and connection pools getSessionFactory().close(); } }
Crear un test:
Vamos a generar un test para probar como todo funciona:
package com.ejemplo; import static org.junit.Assert.*; import java.util.List; import org.hibernate.classic.Session; import org.junit.Test; import com.ejemplo.util.HibernateUtil; public class HibernateTest { @Test public void test() { Persona persona = new Persona("Juan","Rodriguez"); Session session = HibernateUtil.getSessionFactory().openSession(); session.beginTransaction(); session.save(persona); session.flush(); Listpersonas = session.createQuery("from Persona").list(); assertFalse(personas.isEmpty()); Persona personaGuarda = (Persona) session.get(Persona.class, persona.getId()); assertEquals(persona, personaGuarda); } }
Crear esquema en la base de datos:
Es necesario escribir un esquema llamado prueba en la base de datos Mysql.
Ahora a correr el Test y todo debería a andar!