lunes, 19 de octubre de 2009

Ejercicio Basico Hibernate

Ejercicio Basico Hibernate

Para este ejercicio en Hibernate necesitamos una tabla PERSONA la cual es creada desde Apache Derby, hay una entrada en este blog el cual explica la creación de esta tabla

Creacion Tabla Derby

En la parte final están los scripts y código Java de este ejemplo.

Estructura de la tabla persona

CREATE TABLE PERSONA (
NOMBRE VARCHAR(10),
APELLIDOP VARCHAR(20),
EDAD INTEGER
);

Valores insertados

INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Dracof','Dracof',28);

INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Juan','Perez',33);

INSERT INTO PERSONA (NOMBRE, APELLIDOP, EDAD) VALUES ('Maria E.','Andrade',60);

Estructura del proyecto en eclipse



Descargamos el archivo hibernate-distribution-3.3.0.GA-dist.zip desde la siguiente direccion

hibernate-distribution-3.3.0.GA-dist.zip

Lo descomprimimos he importamos las liberarías en nuestro proyecto en eclipse


antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
javassist-3.4.GA.jar
jta-1.1.jar
slf4j-api-1.4.2.jar
hibernate3.jar
slf4j-log4j12-1.4.2.jar
log4j-1.2.15.jar

Para usarlo con Derby importamos ademas las librerias

derbyclient.jar

De inicio creamos una clase para la creación de sessiones hibernate

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
try {
sessionFactory = new Configuration().configure().buildSessionFactory();
} catch (Throwable tr) {
tr.printStackTrace();
throw new ExceptionInInitializerError(tr);
}
}

public static SessionFactory getSessionFactory () {
return sessionFactory;
}
}

Creamos un pojo que representa la tabla persona

public class Persona {

private String nombre;
private String apellidoP;
private Integer edad;

public String getNombre() {
return nombre;
}

public void setNombre(String nombre) {
this.nombre = nombre;
}

public String getApellidoP() {
return apellidoP;
}

public void setApellidoP(String apellidoP) {
this.apellidoP = apellidoP;
}

public Integer getEdad() {
return edad;
}

public void setEdad(Integer edad) {
this.edad = edad;
}
}

Con su archivo de configuración Persona.hbml.cml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class name="org.dracof.hibernate.Persona" table="PERSONA">
<id name="nombre" column="NOMBRE">
<generator class="assigned"/>
</id>
<property name="apellidoP" column="APELLIDOP"/>
<property name="edad" column="EDAD"/>
</class>
</hibernate-mapping>


Creamos el archivo de configuración de Hibernate (hibernate.cfg.xml)

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
<property name="connection.driver_class">
org.apache.derby.jdbc.ClientDriver</property>
<property name="connection.url">
jdbc:derby://localhost:1530/dracof
</property>

<property name="connection.username">dracof</property>
<property name="connection.password">dracof</property>
<property name="current_session_context_class">thread</property>
<property name="dialect">
org.hibernate.dialect.DerbyDialect
</property>
<property name="show_sql">true</property>

<mapping resource="org/dracof/hibernate/Persona.hbm.xml"/>
</session-factory>
</hibernate-configuration>

Por último creamos una clase Test para probar lo anterios

public static void main(String[] args) {
Session session =
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Persona persona = (Persona)session.get(Persona.class, "Dracof");
System.out.println( persona.getApellidoP() );
session.close();
}

Este es el resultado de ejecutar el main

Hibernate: select persona0_.NOMBRE as NOMBRE0_0_, persona0_.APELLIDOP as APELLIDOP0_0_, persona0_.EDAD as EDAD0_0_ from PERSONA persona0_
where persona0_.NOMBRE=?

Dracof

Script de este ejercicio script.sql

Codigo de este ejercicio HibernateBasico.zip

Suerte.

2 comentarios:

  1. Este comentario ha sido eliminado por un administrador del blog.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por un administrador del blog.

      Eliminar