lunes, 27 de junio de 2011

HIBERNATE EN JAVA

Pasos a seguir para el acceso a la Base de Datos por medio de HIBERNATE....


Usando Hibernate en Java Swing Aplication
Creando la base de datos:

En este tutorial usaremos la base de datos mysql gratuita de netbeans llamada sakila, así que para agregarlo nos vamos al plugin manager de netbeans e instalamos y posteriormente activamos



Después de haber instalado el plugin nos vamos a la ventana de servicios para arrancar el mysql server y posterior con click derecho le damos en crear nueva base de datos:



Una vez agregada si no aparece conectada como en la imagen abajo la activamos mediante click derecho conectar:



Una vez la base de datos este lista procederemos a crear el proyecto.
Nos vamos a New Proyect, seleccionamos Java Aplicaction de la opción Java y le damos siguiente




En la siguiente ventana escribimos el nombre del proyecto (en este ejemplo le llamaremos hibernate_ejemplo), deseleccionamos la opción Use Dedicated Folder, deseleccionamos Create Main Class, y le damos en finalizar



Ahora como siguiente paso le agregaremos el soporte de hibernate a nuestro proyecto agregando las librerías de hibernate, desde el menú projects le damos click derecho al paquete de librerías y le damos en la opción Add Library y seleccionamos las librerías de hibernate en el cuadro de dialogo mostrado


Ya tenemos agregadas las librerías asi q procedemos a crear los archivos de configuración necesarios para hibernate, le damos click derecho al archivo del proyecto y le damos click a Other en la opción New. Ahora en la ventana de New File le damos seleccionamos hibernate y luego Hibernate Configuration Wizard y le damos siguiente.



En la siguiente ventana dejamos la configuración por defecto y le damos siguiente:


En la siguiente ventana en la opción de Database Connection seleccionamos Sakila de las opciones y luego click en finalizar.



Con esto se habrá creado un archivo hibernate.cfg.xml dentro de nuestro proyecto y procederemos a cambiarle algunas opciones en la configuración. En la sección de Optional Properties buscamos Configuration Properties lo expandimos y le damos Add:



Luego buscamos la opción Miscellaneous Properties la expandimos y le damos click en Add y selecionamos la opción hibernate.query.factory_class como Property Name y también seleccionamos org.hibernate.hql.classic.ClassicQueryTranslatorFactory como Property Value


Si le damos en la vista de XML podremos observar algo parecido a lo siguiente:

Siempre es aconsejable guardar los cambios después de agregar algo nuevo por cualquier catástrofe que pueda suceder (=P)

Como siguiente paso agregaremos el archivo HibernateUtil.java, dando click derecho en el pequete fuente del proyecto, click en New y luego en Other, aparecerá la ventana de nuevo archivo, seleccionamos hibernate y luego seleccionamos HibernateUtil.java y le damos click en siguiente:


En la siguiente ventana escribimos HibernateUtil como nombre de la clase y sakila.util como nombre del paquete y le damos en finalizar:


Ahora crearemos el archivo Reverse Engineering, nos vamos nuevamente al archivo fuente del proyecto, le damos click derecho, New y luego Other, veremos nuevamente la ventana de selección de archivo nuevo, ahí seleccionamos Hibernate Reverse Engineering Wizard en el listado desplegado de hibernate y damos click en siguiente:

En la ventana siguiente escribimos hibernate.reveng en File Name y click en siguiente:

Ahora en esta nueva ventana seleccionamos la tabla Actor de las tablas disponibles y le damos agregar y luego finalizar:

Ahora solo nos falta un archivo de configuración asi que, nuevamente nos vamos al origen del proyecto, le damos click derecho y seleccionamos New y luego seleccionamos Other, nos aparecerá el menú de selección de archivo nuevo, seleccionamos hibernate y luego Hibernate Mapping Files and POJOs

En esta nueva ventana seleccionamos las opciones de manera que quede de la siguiente manera:

Ahora que ya tenemos los archivos de configuración solo nos resta agregar una interfaz grafica esto lo hacemos de la siguiente manera:

Dejamos las configuraciones de la siguiente manera:


Una vez le damos en finalizar ya podemos agregar etiquetas, botones, cajas de texto y también una tabla de manera que se pueda ver de la siguiente forma:

Ahora procederemos a hacer unas consultas en el editor HQL Query, nos vamos a los archivos del proyecto, expandimos el default package, y le damos click derecho a hibernate.cfg.xml y seleccionamos Run HQL Query


En este editor veremos como se hacen las consultas usando hibernate. Y podemos probar el editor de la siguiente manera:

Ahora bien realizaremos un par de consultas:

from Actor a where a.firstName like 'PE%'
from Actor a where a.lastName like 'MO%'

Nos mostrara los siguientes resultados:



Ahora solo nos resta agregarle unas cuantas líneas de código:
private static String Busqueda_Basada_En_Nombre="from Actor a where a.firstName like '";
private static String Busqueda_Basada_En_Apellido="from Actor a where a.lastName like '";

private void runBusquedaBasadaEnNombre () {
executeHQLQuery(Busqueda_Basada_En_Nombre + jTextField1.getText() + "%'");
}

private void run BusquedaBasadaEnApellido () {
executeHQLQuery(Busqueda_Basada_En_Apellido+ jTextField2.getText() + "%'");
}

private void executeHQLQuery(String hql) {
try {
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
Query q = session.createQuery(hql);
List resultList = q.list();
displayResult(resultList);
session.getTransaction().commit();
} catch (HibernateException he) {
he.printStackTrace();
}
}

Nos quedara de la siguiente manera:


Agregamos estas líneas también

private void displayResult(List resultList) {

Vector tableHeaders = new Vector();

Vector tableData = new Vector();

tableHeaders.add("ActorId");

tableHeaders.add("FirstName");

tableHeaders.add("LastName");

tableHeaders.add("LastUpdated");

private void displayResult(List resultList) {

Vector tableHeaders = new Vector();

Vector tableData = new Vector();

tableHeaders.add("ActorId");

tableHeaders.add("FirstName");

tableHeaders.add("LastName");

tableHeaders.add("LastUpdated");


for(Object o : resultList) {

Actor actor = (Actor)o;

Vector oneRow = new Vector();

oneRow.add(actor.getActorId());

oneRow.add(actor.getFirstName());

oneRow.add(actor.getLastName());

oneRow.add(actor.getLastUpdate());

tableData.add(oneRow);

}

jTable1.setModel(new DefaultTableModel(tableData, tableHeaders));

}”

Tambien las siguientes líneas en el queryButton al darle doble click al botón de nuestro formulario

private void queryButtonActionPerformed(java.awt.event.ActionEvent evt) {

if(!firstNameTextField.getText().trim().equals("")) {

runQueryBasedOnFirstName();

} else if(!lastNameTextField.getText().trim().equals("")) {

runQueryBasedOnLastName();

}

}

Nos quedara de la siguiente manera:


Con eso hemos agregado todo lo necesario, solo nos hace falta correr el proyecto. Pero para eso necesitamos agregar algo mas, nos vamos al archivo fuente del proyecto le damos click derecho y luego click en propiedades, nos vamos a la opción run y en Main Class digitamos sakila.ui.hibernate_ejemplo, le damos ok y listo ya podemos correr la aplicación. Y con esto terminamos con el ejemplo. Gracias por leer este ejemplo.


AZENON FLORES, JOSE MAURICIO (josephmazf.7@gmail.com)

CONTRERAS CRUZ, HECTOR FERNANDO (hfernando.c@gmail.com)

FLORES RODRIGUEZ, DAVID ROMEO (drflores19@gmail.com)

MARTINEZ GUTIERREZ, DAVID ARTURO (davicitogospel@gmail.com)

1 comentario:

Unknown dijo...

Mae la verdad Muchas Gracias !! me sirvió 100% ... saludos desde Costa Rica :-D, agrega mas ejemplos...