sábado, 30 de abril de 2011

Integración de JSF(PrimeFaces) y Hibernate(JPA)



Primeramente debo agradecer la super buena acogida de mi post anterior sobre la Integración de los frameworks JSF-Spring-Hibernate. Muchas gracias a la gente que me ha escrito y ya que muchos me han pedido que muestre como sería la integración JSF-Hibernate (sin la presencia de Spring) procedo a hacer éste post bajo pedido, y claro, siempre es un gusto colaborar con la comunidad.

El objetivo de éste post es generar la misma aplicación que hice al integrar JSF-Spring-Hibernate (pero sin Spring de por medio), es decir generaremos una aplicación web que interactúe con una base de datos (en MySQL) sobre la cual haremos inserciones, recuperación de datos y claro el despliegue de información en la capa de vista:



Ya que mencioné la capa de vista, la librería JSF que usaré será PrimeFaces 2.1 ¿por qué? porque el IDE que emplearé para éste ejemplo (Netbeans 7.0 beta 2) brinda ésta librería por defecto para trabajar con JSF 2.0.
Y ¿Por qué se usa Netbeans en éste post? porque las personas que me han escrito me pidieron que desarrollara éste ejemplo con Netbeans. Por cierto ¿Es mejor Netbeans que Eclipse? la respuesta es NO, ambos son extremadamente poderosos y personalmente ambos me gustan mucho, claro en la actualidad ando más inclinado por Netbeans pues gestiona los nuevos aspectos de la plataforma JEE6 de manera más transparente; pero en resumen ambos IDE´s son realmente buenos y todo programador debe estar abierto a trabajar con cualquiera de ellos en cualquier momento.

Nota: El servidor que uso es Glassfish 3.1 ¿por qué? porque viene por default instalado en la version de Netbeans que uso, pero aclaro que no hay restricción para quien estuviera usando alguna otra alternativa como Tomcat, Jboss, etc. y de hecho al trabajar con frameworks ligeros como JSF, Spring o Hibernate basta con Tomcat ya que no requerimos características de contenedor EJB.

Let´s do it!.

1) Creamos un proyecto web en Netbeans (añadiendo características de JSF y Hibernate).

2) Creamos el archivo de configuración de hibernate (hibernate.config.xml)



3) Escribimos la entidad Persona para lograr el mapeo de nuestra clase java al mundo relacional de la base de datos (no olvide incluirse el mapeo de ésta entidad en el archivo de configuración de hibernate)



4) Creamos la clase HibernateUtil la cual es la responsable de gestionar las sesiones de Hibernate para acceder a la base de datos.



5) Creamos la clase PersonaBB, como Backin Bean de JSF. Nótese el uso de anotaciones que se hace y como se crea lógica de negocio en él.



6) Creamos nuestra la página index.html con la cual podremos insertar y desplegar información en y desde la base de datos.



CONCLUSIÓN
Al realizar aplicaciones web Java, como es notorio en éste y mi anterior
posts el progamador no tiene reglas fijas que definan el uso que debe hacer de uno u otro framework, de hecho en el ejemplo de éste post excluimos por completo el uso de Spring, pero sea cual fuere la estrategia que un programador implemente como solución EE, ésta siempre debe estar enfocada en cumplir con las mejores prácticas y patrones que define la industria, por eso aclaro que éste post tuvo fines netamente educativos al integrar JSF con Hibernate, pero se sugiere a los lectores que tomen muy en cuenta las potencialidades que Spring brinda, resultado la combinación JSF-Spring-Hibernate una tripleta extremadamente poderosa para aplicaciones web.

El código del ejemplo (Proyecto en Netbeans 7.0 beta 2) puedes descargarse aquí.
Las librerías necesarias para probar el proyecto pueden descargarse aquí.

22 comentarios:

Veritto dijo...

QUee bien!! Se entiende el ejemplo usando JSF & Hibernate, sobre todo se entiende la diferencia que existe usando los 3 frameworks. Gracias Santiago por ilustrar un ejemplo como este :).

Roberto Salazar dijo...

Buen POST, se te felicita por seguir avanzando en el mundo de JEE6

Hacker dijo...

Genial Santiago felicitaciones por tu gran trabajo. Estoy intentando realizar una aplicacion web Java, usando Java server faces (jsf) sin configurara archivos xml solo usando anotaciones: @ManageBena y Java Persistence Api (jpa) solo con estos dos frameworks y quizas Hibernate o eclipselink para el archivo persistence.xml.

espero puedas ayudarme con esto
muchas gracias

Hacker dijo...

Muchas Gracias

Santiago Tapia dijo...

Hola Hacker, éste post tiene exactamente lo que me pides: integración de JSF(con anotaciones) y JPA (con hibernate como persistence provider).
Saludos.

Alberto dijo...

Hola Santiago, Enhorabuena por tu blog. No tendtras algun ejemplo de integración de Spring,hibernate(JPA) y JSF para netBeans??.

Alberto dijo...

Hola Santiago. Enhorabuena por tu blog que es de gran utilidad. Estoy intentando desarrollar una portal web en netbeans integrando Spring3, hibernate(JPA) y JSF. He estado mirando el ejemplo que colgaste hecho en eclipse pero no me quedan muy claro la estructura del proyecto. ¿Tendría uno muy basico para netBeans. Muchas gracias. Eres un crack!!!

Santiago Tapia dijo...

Hola Albert, gracias tu buena onda la verdad no tengo hecho en netbeans pero comoe stamos pa darnos una mano contáctame al correo y ahí hacemos el ejemplo contigo ;)

Ricardo Sosa dijo...

Buenas Santiago! buen aporte pero solo tengo una duda, las librerias a usar solo es la de PrimeFaces o hay alguna otra q se usa para este ejemplo??? porque esta malo el link de las librerias por eso es mi pregunta. Saludos y buen Blog.

Santiago Tapia dijo...

Saludos hermano, el ejemplo lo hice con netbeans así que habilité la cracterística jsf en mi proyecto web con lo cual Netbeans automátiamente incluye las librerías de primefaces en el proyecto, lo cual podrias hacer tú tambien; PERO tambien uso otras librerias por ejemplo de hibernate. Si sigues experimentando algun problema, avísame y te mando las librerias. Un abrazo.

Ricardo Sosa dijo...

Ok Amigo! De pronto no tengo problemas! muchas gracias! y muy buen Blog compañero! Felicidades! y gracias por ayudarnos a los q vamos comenzando en esto!! Saludos

Ricardo Sosa dijo...

Q tal amigo? mira fijate que tengo un problemita, fijate q estoy utilizando tu ejemplo de este articulo para realizar un Projecto en una materia de la Universidad y tengo un problema con la classe HibernateUtil, no se que error es el que me da pero hasta ya inclui unas libs que podria ocupar cmo son SLF4J y aun asi no puedo conseguir que funcione. nose si me podrias recomendar algo. Gracias

Anónimo dijo...

Hola, muy bueno el ejemplo, tengo problamas al ejecutar la pagina, da error 404 recurso requerido no esta disponible, no se si hay que realizar alguna configuracion mas, por otro lado ¿cual seria la url de ejecucion? , muchas gracias

Santiago Tapia dijo...

Qué raro...si lo estás haciendo con Netbeans, él solito te incluye las librerias (si habilitas el soporte para Hibernate en tu proyecto), pero igual si lo hicieras con cualquier IDE todo es cuestión de añadir las librerías. Comentame como vas, o sino pa vernos en el messenger y chequear el lio.

Ing. Juan Narváez dijo...

Buenas Santiago excelente por el post, me gustaría comentarte que estoy tratando de realizar un ejemplo con JSF 2.0 + Spring + Hibernate en netbeans me gustaría que pusieras un ejemplo sencillo con netbeans y si puedes usando anotaciones mejor.

Un saludo

Santiago Tapia dijo...

Estimado Juan, gracias tu comentario, y si no me falla la memoria hay un plugin en Netbeans que te permite importar los proyectos de Eclipse y como ya tienes tiene el código de mi ejemplo, chequéalo para que te ahorres el trabajo de hacerlo a mano, sin embargo el pasar de IDE a otro no es problema hermano, solo copia las librerias y el resto de archivos ya estan digitados, solo copialos en las respectivas ubicaciones y listo (no te llevaria mas de 10 minutos hacerlo)! Un abrazo, sin emabrgo avisame como va todo.

Martin dijo...

Hola capo!! t comento q ninguna clase me tira error.. solo el index.xhtml
en esta linea

xmlns:p="http://primefaces.prime.com.tr/ui"

y x lo tanto no me reconoce las etiquetas de los componentes.. lo estoy haciendo con netbeans 6.9.1 sera q no me incluye la libreria primefaces?

jose dijo...

Links caidos.
Podrias subirles otra vez?
Gracias

Santiago Tapia dijo...

Estimados Jose y Martín, gracias por leer mi blog, mi sugerencia es que cuando creen su proyecto en Netbeans incluyan las librerías que el mismo IDE les brinda (de hecho yo hice así el proyecto), para ésto simplemente habiliten los checkboxes necesarios: JSF, Hibernate. Sin embargo he actualizado el link de las librerias ;)

tomasjimenezsantos dijo...

Excelente, Felicidades Santiago, te felicito porque la mayoria de CodeHard Software Developer no tiene tiempo para hacer esta labor.

Santiago Tapia dijo...

Gracias a ti tu buena onda tomas. Un abrazo

juancupa dijo...

Buenas Men!........
exelente su Blogs pero tengo un problema con eclipse desarrollo el ejercicio en netbeans y ejecuta perfectamente pero a la Hora de desarrollarlo en eclipse me arroja errores no se si son las librerias
sera que me puedes ayudar XD: