Lo primero es lo primero, descargar la aplicación:
Vamos a seguir el turorial que viene con hibernate, por lo que puedes considerar esto como un resumen adaptado.
Es una buena pregunta porque dado que hibernate es un motor de persistencia el hola mundo es un poco complicado.
Necesitas:
… Ya lo tienes todo.
Lo primero que vamos a hacer es ubicar cada cosa en su sitio. Vamos a crear un directorio raíz de nuestro proyecto. y a continuación crearemos:
Pondremos en lib los jar que te has bajado de sus respectivos sitios:
por lo que nos quedará un arblo de directorios tal que así:
. +lib hibernate3.jar hsqldb.jar +src +data
Como hemos dicho Hibernate es un motor de persistencia. Por lo que se encarga de replicar en base de datos nuestros DTO's.
Vamos a usar la clase que nos proponen en el tutorial de hibernate y vamos a suponer que queremos guardar en base de datos algo tal que así:
package org.hibernate.tutorial.domain;
import java.util.Date;
public class Event {
private Long id;
private String title;
private Date date;
public Event() {}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Una vez tenemos la clase a mapear debemos decirle a Hibernate a donde van los datos de nuestra clase. Hibernate necesita saber como y de donde recuperar y guardar los datos de nuestra clase. Esto se hace mediante el XML de Mapeo que suele llamarse como la clase que mapea + hbn.xml por lo que en nuestro ejemplo se llamará Event.hbm.xml.
En este XML lo que haremos será decirle en que tabla y en que columna se guarda cada miembro ( valor)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- NOMBRE DEL DOCUMENTO : Event.hbn.xml -->
<hibernate-mapping>
<class name="events.Event" table="EVENTS"> <!-- La clase events.Event va a la tabla EVENTS -->
<id name="id" column="EVENT_ID"> <!-- El nombre del id es id y va en la columna EVENT_ID -->
<generator class="native"/> <!-- El generador es el nativo de la base de datos -->
</id>
<property name="date" type="timestamp" column="EVENT_DATE"/> <!-- el atributo date es del tipo timestamp y va a la columna EVENT_DATE -->
<property name="title"/> <!-- El stributo title lo vamos a guardar en una columna con el mismo nombre title -->
</class>
</hibernate-mapping>
No hay que ser muy listo para ver que:
por lo que ya tenemos un arbol de directorios tal que así:
.
+lib
hibernate3.jar
hsqldb.jar
+src
+events
Event.java
Event.hbm.xml
+data
Llegados a este punto ya sólo nos queda configurar hibernate. Decirle que base de datos vamos a usar, donde está, etc. Eso se puede hacer mediante un simple .properties o mediante un XML. Como que XML mola mas lo vamos a hacer con XML. De este modo crearemos hibernate.cfg.xml en la raíz de nuestro proyecto.
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!-- NOMBRE DEL DOCUMENTO : hibernate.cfg.xml -->
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
<property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
<property name="connection.username">sa</property>
<property name="connection.password"></property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.HSQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property>
<!- Documento de mapeo de clases -->
<mapping resource="events/Event.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Recuerda que Hibernate es nuestro motor de persistencia. Las conexiones las haremos mediante JDBC. En este ejemplo para simplificar las cosas estamos usando hsqldb y el JDBC interno de hibernate. Recuerda que si usas ySql, Oracle, etc deberás incluir el jar pertinente del JDBC en el directorio lib de tu proyecto.
Bueno, no es el objetivo de este tutorial explicarte que es, para que sirve y lo que se puede hacer con ANT. Eso ya te lo dichen los amigos de ant.apache.org y yo tambien tengo un mimi-recordatorio
Por lo que simplemente copia exte build.xml en la raíz de tu proyecto
<!-- nombre del archivo : build.xml -->
<project name="hibernate-tutorial" default="compile">
<property name="sourcedir" value="${basedir}/src"/>
<property name="targetdir" value="${basedir}/bin"/>
<property name="librarydir" value="${basedir}/lib"/>
<path id="libraries">
<fileset dir="${librarydir}">
<include name="*.jar"/>
</fileset>
</path>
<target name="clean">
<delete dir="${targetdir}"/>
<mkdir dir="${targetdir}"/>
</target>
<target name="compile" depends="clean, copy-resources">
<javac srcdir="${sourcedir}"
destdir="${targetdir}"
classpathref="libraries"/>
</target>
<target name="copy-resources">
<copy todir="${targetdir}">
<fileset dir="${sourcedir}">
<exclude name="**/*.java"/>
</fileset>
</copy>
</target>
</project>
por lo que ya tenemos un arbol de directorios tal que así:
.
build.xml
+lib
hibernate3.jar
hsqldb.jar
+src
hibernate.cfg.xml
+events
Event.java
Event.hbm.xml
+data
Ahora tan sólo hay que probar a ejecutar:
juantxu@apolonia:~/java/hibernateTest$ ant
Buildfile: build.xml
clean:
[delete] Deleting directory /home/juantxu/java/hibernateTest/bin
[mkdir] Created dir: /home/juantxu/java/hibernateTest/bin
copy-resources:
[copy] Copying 2 files to /home/juantxu/java/hibernateTest/bin
compile:
[javac] Compiling 1 source file to /home/juantxu/java/hibernateTest/bin
BUILD SUCCESSFUL
Total time: 3 seconds