0% encontró este documento útil (0 votos)
962 vistas

How To Create A J2SE Spring-Hibernate Desktop App!!!

Este documento proporciona instrucciones para configurar una aplicación Spring y Hibernate en MyEclipse. Explica cómo instalar PostgreSQL y crear una base de datos y tablas, agregar las capacidades de Spring y Hibernate a un proyecto Java, mapear las tablas de la base de datos a clases Java, y organizar el código generado. También describe cómo crear una clase de prueba para interactuar con la base de datos.

Cargado por

José Said
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
962 vistas

How To Create A J2SE Spring-Hibernate Desktop App!!!

Este documento proporciona instrucciones para configurar una aplicación Spring y Hibernate en MyEclipse. Explica cómo instalar PostgreSQL y crear una base de datos y tablas, agregar las capacidades de Spring y Hibernate a un proyecto Java, mapear las tablas de la base de datos a clases Java, y organizar el código generado. También describe cómo crear una clase de prueba para interactuar con la base de datos.

Cargado por

José Said
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 43

Spring Core and Hibernate on

Myeclipse

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Introduction

Autor: José Said Olano García


Correo: [email protected]
http://java4said.blogspot.com
SCJA, SCJP, SCWCD, SCBCD, SCMAD

Espero esto te sirva como una guía para ayudarte en la creación de una aplicación simple que usa Spring y
Hibernate.

Este pequeño pero útil manual nos ayudará a comprender cómo se realiza una aplicación usando:

· PostgreSQL como manejador de base de datos.


· Spring framework para la capa de DAO y las operaciones de acceso a la BD.
· Hibernate Framework como Mapeador de Objetos Relacional (ORM).

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Configurando nuestra BD
Los siguientes son los pasos para configurar nuestra Base de
Datos.

· Crear la Base de datos


· Crear las secuencias necesarias
· Crear las tablas necesarias.

System requirements
Dentro de los requerimientos que tendrá nuestra aplicación Spring & Hibernate están:

· PosgreSQL 8.4 descargable de la página


http://www.postgresql.org/download/
· Spring framework (Será agregado como una de las capacidades de nuestro proyecto Java)
Pueden ver más información de este en su página:
http://www.springsource.org
· Hibernate 3.2 framework (Será agregado como una de las capacidades de nuestro proyecto Java)
http://www.hibernate.org/

Instalando la BD
Lo primero que tenemos que hacer es arrancar nuestro manejador postgreSQL.

Usando el programa pgAdmin III:

Después debemos crear nuestra base de datos:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Para hacerlo las instrucciones son las siguientes:

1. Acceder a nuestro servidor de Base de Datos (BD).


2. Click derecho y elegir la opción new Database.
3. Posteriormente, asignarle un nombre a la BD.
4. Click en el botón Aceptar

Creando nuestra tabla


Para crear nuestra tabla debemos hacer lo siguiente:

1. Crear la secuencia correspondiente para cada registro.


2. Crear la tabla deseada y en su campo id agregarle el valor nextval ('nombreDeLaSecuencia').

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Veamos como se hace:

Creación de una secuencia.

1. Establecerle un nombre.
2. Establecer el incremento para cada registro
3. Asignar el valor de inicio de la secuencia.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Creación de nuesta tabla que usa la secuencia.

Para crear nuestra tabla:


1. Debemos ponerle un nombre.
2. Ir a la pestaña SQL y desactivar la opción: Read Only
3. Ahi podemos escribir definir manualmente nuestro comando DDL.
4. Ojo: en nuestro campo id debemos poner el tipo de dato, si es o no null, la palabra DEFAULT y
acontinuación nextval('secuencia_persona').
5. Esto ligará nuestra secuencia con nuestro database field.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Al finalizar, nos debe quedar un Script como el siguiente:

Listo, hasta este momento sólo tenemos una tabla con su secuencia.

creando una tabla detalle


Creación de una tabla detalle

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Ahora iremos un poco más rápido.

Después:

y nos quedará una estructura de objetos similar a ésta:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Configurando la aplicación en MyEclipse
Creando la aplicación en MyEclipse

En este punto usaremos Spring y Hibernate.

Los pasos a seguir son:

1. Crear el proyecto Java.


2. Agregar las capacidades Spring.
3. Agregar un Driver de Base de datos (en caso de no tenerlo).
4. Agregar las capacidades Hibernate.
5. Organizar nuestro código.
6. Crear la clase de prueba

Creando un proyecto Java


Creación de un Java Project

Les comparto una imagen de la instalación que tengo en mi pc de MyEclipse.

Iniciemos..

Click Derecho y elegir Java Project

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Después:

· Asignarle un nombre al proyecto.


· Elegir la versión de JDK que usaremos.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Y nos debe quedar esta estructura de archivos:

Listo hemos creado un simple proyecto Java vacio.

Agregando Spring
Agregando Spring Framework a nuestro proyecto.

Ahora veremos como se agrega soporte Spring a nuestro proyecto vacio java.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Los pasos son los siguientes:
1. Click derecho sobre nuestro proyecto.
2. Ir a la opción MyEclipse.
3. Elegir la opción: Add Spring Capabilities

Elegir:
· Spring 2.5 AOP
· Spring 2.5 Core Libraries
· Spring 2.5 Persistence Core Libraries

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Desmarcar la opción:

Enable AOP builder

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Ahora debe quedarnos la siguiente estructura de archivos:

Listo, ahora nuestro proyecto ya tiene las librerias Spring instaladas.

Agregando Spring
Agregando Hibernate Framework a nuestro proyecto.

Ahora veremos como se agrega soporte Hibernate a nuestro proyecto Java.

Los pasos son los siguientes:


4. Click derecho sobre nuestro proyecto.
5. Ir a la opción MyEclipse.
6. Elegir la opción: Add Hibernate Capabilities

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Activar la opción
· Dejar activas las opciones que ya se encuentran seleccionadas
· Hibernate 3.2 Advanced Support Libraries.

Nos debe quedar algo así:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Elegir la opción:

Hibernate configuration file (hibernate.cfg.xml)

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Escribir algún nombre para nuestra clase SessionFactory a crear:

El siguiente paso es elegir nuestro Driver de BD. Nota: La primera vez no se cuenta con DB Drivers. Para

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
agregar uno vea el tema: Agregar un DB Driver.

La siguiente pantalla nos solicitará el nombre de nuestra SessionFactory:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Lo unico que haremos es crear un paquete para tener más ordenado nuestro código fuente.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
La siguiente imagen nos muestra cómo es que queda la última pantalla del asistente:
Por ultimo presionamos Finish

Ahora debe quedarnos la siguiente estructura de archivos:

Listo, ahora nuestro proyecto ya tiene las librerias Hibernate instaladas.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Mapeo de DB a Java
Mapeo de la Base de datos a Clases Java.

Para poder trabajar haciendo uso de Spring y Hibernate ( ya configurados previamente), lo que debemos
de hacer es lo siguiente:

· En la pestaña DB Browser elegir la tabla que deseamos mapear a clase de Java.


· Después elegir la opción: Hibernate Reverse Engineering

IMPORTANTE CUANDO TENGAMOS ESTA PANTALLA:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
DEBEREMOS CREAR UN NUEVO PAQUETE PARA TODO LO QUE GENERAREMOS, por ejemplo:

Ahora si podemos continuar con las demás instrucciones.

Tenemos que dejar activas las opciones:


· Create POJO<>DB Table mapping information
· *Create a hibernate mapping file (*.hbm.xml for each database table)
· * Update Hibernate configuration with mapping resource location.
· Java Data Object <>DB Table
· *Create abstract class

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
· Java Data Access Object (DAO) (Hibernate only)
· *Generate precise findBy methods
Y POR ULTIMO:
· DAO Type: Basic DAO

En la siguiente página deberemos elegir en el campo Id Generator: Sequence

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
En la siguiente página debemos

1.- Elegir el correcto IdGenerator: sequence para cada tabla.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
De modo que quede de la siguiente manera:

Lo mismo para la siguiente tabla:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
2.- Activar las 2 cajas de verificación:
· Include referenced tables (A->B)
· Include referencing tables (A<-B).
ASI MISMO COMO LAS 2 OPCIONES INFERIORES:
· Generate support for ListedTable(fk)->UnlistedTable
· Generate support for UnListedTable(fk)->ListedTable

Quedando de la siguiente manera:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Eso nos tuvo que generar un esquema de archivos como este:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Organizando el código

Organizando el código de una manera más ordenada podrías quedar así:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Creando nuestra clase Demo.java
Clase Demo

Para crear la clase que nos permitirá interactuar directamente sobre nuestra BD debemos dar click
derecho sobre nuestra proyecto Java, luego elegir la opción New, después Class

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
En la pantalla bastará que:
· Elijamos un paquete
· Nombre a nuestra clase
· Generemos un método main.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Su código es el siguiente:

/**
*
*/
package com.mx.josesaid.tester;

import java.util.Calendar;

import org.hibernate.Transaction;

import com.mx.josesaid.codigo.dao.PersonaDAO;
import com.mx.josesaid.codigo.pojos.Persona;
import com.mx.josesaid.fabrica.HibernateSessionFactory;

/**
* @author Administrator
*
*/
public class DemoMainClass {

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
/**
* @param args
*/
public static void main(String[] args) {
Transaction tx = HibernateSessionFactory.getSession()
.beginTransaction();
PersonaDAO personaDao = new PersonaDAO();
Persona p = new Persona();
p.setNombre("jose said");
// p.setId(-1);
p.setApellidopaterno("Olano");
p.setApellidomaterno("Garcia");
p.setEdad(27);
java.sql.Timestamp fecha = new java.sql.Timestamp(Calendar
.getInstance().getTime().getTime());
p.setFechanacimiento(fecha);
personaDao.save(p);
tx.commit();
HibernateSessionFactory.getSession().close();
System.out.println("listo");
}
}

Este código tiene un detalle --> AL momento de insertar el registro nos mostrará un
error:

Esto debido a que en el Id Generator de cada tabla escribimos el valor sequenced.

Para corregirlo tenemos 2 opciones:

1. Crear en postgreSQL la secuencia hibernate_sequence:


C REATE SEQUENC E hibernate_sequence
INC REMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
C AC HE 1;

2. ó en su defecto modificar cada uno de nuestros archivos hbm.xml y en el tag <generator

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
class="sequence"></generator> escribir el nombre de la secuencia como lo muestro abajo de manera
correcta.

FRAGMENTO ERRONEO:

<id name="id" type="java.lang.Integer">


<column name="id" />
<generator class="sequence"></generator>
</id>

FRAGMENTO CORRECTO:

<id name="id" type="java.lang.Integer">


<column name="id" />
<generator class="sequence">
<param name="sequence">secuencia_direccion</param>
</generator>
</id>

Una vez corregidos estos detalles ahora si podremos perctarnos que todo salió correcto:

Ahora veamos en la base de datos como quedó insertado nuestro registro...

¿Que pasa si ejecutamos nuevamente nuestro código Java?

R = Obtenemos el siguiente error:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
El cual nos dice que hay una violación al UNIQUE CONSTRAINT para el campo nombre, ya que como
recordaremos lo declaramos unico en nuestra base de datos, si no recuerdas observa:

Saludos....

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Apendices

Agregar un DB Driver en MyEclipse


Cómo agregar un DB Driver en MyEclipse.

Veamos como se hace:

Dar click en el icono: para que nos despliegue una lista, de la cual seleccionaremos la opción:
MyEclipse Database Explorer

Esto nos habilitará la pestaña en el IDE llamada DB Browser, en ésta damos click derecho y
seleccionamos la opción New

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
y procederemos a llenar el formulario con los datos de nuestro servidor de base de datos.

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Luego probamos que nuestro driver sea correcto, y para finalizar veremos una pantalla como la
siguiente:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
Esto indica que todo salió perfectamente.

Archivo hibernate.cfg.xml
Archivo hibernate.cfg.xml
<?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">

<!-- Generated by MyEclipse Hibernate Tools. -->


<hibernate-configuration>

<session-factory>
<property name="dialect">
org.hibernate.dialect.PostgreSQLDialect
</property>
<property name="connection.url">
jdbc:postgresql://localhost:5432/java
</property>
<property name="connection.username">postgres</property>
<property name="connection.password">said</property>
<property name="connection.driver_class">
org.postgresql.Driver
</property>
<property name="myeclipse.connection.profile">
PostgreSQL_said
</property>
<mapping resource="com/mx/josesaid/codigo/Persona.hbm.xml" />
<mapping resource="com/mx/josesaid/codigo/Direccion.hbm.xml" />

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
</session-factory>

</hibernate-configuration>

Archivo HibernateSessionFactory.java
Archivo HibernateSessionFactory.java

package com.mx.josesaid.fabrica;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

/**
* Configures and provides access to Hibernate sessions, tied to the
* current thread of execution. Follows the Thread Local Session
* pattern, see {@link http://hibernate.org/42.html }.
*/
public class HibernateSessionFactory {

/**
* Location of hibernate.cfg.xml file.
* Location should be on the classpath as Hibernate uses
* #resourceAsStream style lookup for its configuration file.
* The default classpath location of the hibernate config file is
* in the default package. Use #setConfigFile() to update
* the location of the configuration file for the current session.
*/
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;

static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}

/**
* Returns the ThreadLocal Session instance. Lazy initialize
* the <code>SessionFactory</code> if needed.
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();

if (session == null || !session.isOpen()) {


if (sessionFactory == null) {

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}

return session;
}

/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}

/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);

if (session != null) {
session.close();
}
}

/**
* return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}

/**
* return session factory
*
* session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}

/**
* return hibernate configuration
*
*/
public static Configuration getConfiguration() {

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
return configuration;
}

Archivos hbm.xml
NOTA: obervar que el archivo hibernate.cfg.xml en sus tags mapping resources tenga la ubicación
correcta de los archivos en los paquetes que dicen estar.

Inicialmente era:

Pero al organizar el código y ponerlos dentro del paquete com.mx.josesaid.codigo.xml, la ruta


también deberá de ser actualizadas en las líneas 24 y 25 quedando de la siguiente manera:

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator
es claro no?

Correciones a Archivos hbm.xml


De igual manera sucede con los archivos

· Direccion.hbm.xml
· Persona.hbm.xml

Los cuales inicialmente estaban en la ruta:

"com.mx.josesaid.codigo.Persona"
y
"com.mx.josesaid.codigo.Direccion respectivamente",

que ahora pasan a estar segun el arbol de directorios YA ORGANIZADO esta nueva ruta:

"com.mx.josesaid.codigo.pojos.Persona" y "com.mx.josesaid.codigo.pojos.Direccion"

Created with the Freeware Edition of HelpNDoc: Free CHM Help documentation generator

También podría gustarte