Ejemplo completo JSF+JPA en JSE
Os anuncio que he desarrollado un ejemplo completo de aplicación JSF con acceso a datos mediante JPA para vuestra formación.
A continuación está el Link para descargar los fuentes:
http://dl2u.savefile.com/f158ee0159974a371f810c17e7ac4c23/zoo.rar
Dentro encontrareis dos ficheros:
- zoo.war (es la aplcación que es desplegable directamente en Tomcat5.5)
- zoo.rar (son los fuentes de la aplicación para su utilización en Eclipse)
La aplicación solo tiene dos páginas. La primera "animalList.jsp" ofrece la lista de animales existentes y permite insertar, eliminar y modificar los mismos. La segunda "animalForm.jsp" representa el formulario de edición de los campos de la tabla ANIMAL.
He dividido los fuentes en los siguientes paquetes y clases:
drm.zoo.model
AnimalEntity
drm.zoo.control
AnimalBean
AnimalListBean
drm.zoo.view
AnimalListManagedBean
AnimalManagedBean
drm.zoo.dto
Animal
AnimalEntity representa la entidad Animal y es un EntityBean generado con Dali y que posteriormente he modificado añadiendo una NamedQuery.
AnimalBean utiliza la clase Animal para realizar las operaciones básicas de insercción, modificación, borrado en la base de datos. Para ello utiliza un EntityManager que recibe como parametro en su creación.
La clase AnimalListBean gestiona las consultas a base de datos de la entidad Animal y es quien ejecuta la NamedQuery.
AnimalListManagedBean y AnimalManagedBean son "Managed Beans" de sesión declarados en el faces-config y son las clases "backing" de las dos páginas jsp. El intercambio de información entre los ManagedBeans y los Beans de control se realizan mediante una clase de tipo DTO (Data Transfer Object). Esta clase es la clase Animal, y únicamente dispone de getters y setters.
Cualquier duda relacionada con el ejemplo será atendida con gusto.
A continuación está el Link para descargar los fuentes:
http://dl2u.savefile.com/f158ee0159974a371f810c17e7ac4c23/zoo.rar
Dentro encontrareis dos ficheros:
- zoo.war (es la aplcación que es desplegable directamente en Tomcat5.5)
- zoo.rar (son los fuentes de la aplicación para su utilización en Eclipse)
La aplicación solo tiene dos páginas. La primera "animalList.jsp" ofrece la lista de animales existentes y permite insertar, eliminar y modificar los mismos. La segunda "animalForm.jsp" representa el formulario de edición de los campos de la tabla ANIMAL.
He dividido los fuentes en los siguientes paquetes y clases:
drm.zoo.model
AnimalEntity
drm.zoo.control
AnimalBean
AnimalListBean
drm.zoo.view
AnimalListManagedBean
AnimalManagedBean
drm.zoo.dto
Animal
AnimalEntity representa la entidad Animal y es un EntityBean generado con Dali y que posteriormente he modificado añadiendo una NamedQuery.
AnimalBean utiliza la clase Animal para realizar las operaciones básicas de insercción, modificación, borrado en la base de datos. Para ello utiliza un EntityManager que recibe como parametro en su creación.
La clase AnimalListBean gestiona las consultas a base de datos de la entidad Animal y es quien ejecuta la NamedQuery.
AnimalListManagedBean y AnimalManagedBean son "Managed Beans" de sesión declarados en el faces-config y son las clases "backing" de las dos páginas jsp. El intercambio de información entre los ManagedBeans y los Beans de control se realizan mediante una clase de tipo DTO (Data Transfer Object). Esta clase es la clase Animal, y únicamente dispone de getters y setters.
Cualquier duda relacionada con el ejemplo será atendida con gusto.


2 Comments:
Por si a alguien le sucede, si instaláis un plugin en Eclipse y éste no lo detecta, ejecutad Eclipse con el flag –clean. De esta forma, obligamos a que Eclipse busque y detecte nuevos plugins instalados.
Os voy a contar algunas cosas que he aprendido mientras intentaba configurar y ejecutar en mi máquina el ejemplo “zoo” que David nos envió por correo.
Lo primero de todo, existen 4 drivers JDBC para Oracle (http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm#02_01). Dos de ellos son para la parte de servidor y los otros dos para la parte de cliente, que son los que nos interesan. Por un lado tenemos el driver JDBC OCI, que necesita la instalación de un cliente Oracle de la misma versión del driver en la máquina cliente. Por otro lado, tenemos el driver JDBC Thin, que NO necesita ningún cliente Oracle para su correcto funcionamiento, sino que se conecta directamente a Oracle mediante un socket. El driver JDBC es el que nos interesa puesto que no depende de la instalación de ningún otro software. Además, al estar escrito completamente en Java, es totalmente independiente de la plataforma. Todos estos drivers están disponibles en http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html.
Muy bien, entendido esto, el driver que está disponible en \\isoftidi01\SHARED\JSF-JPA\04 - librerias JPA\jdbc\oracle10g es un driver JDBC Thin. Por tanto, lo que dijo David en su día de que configuráramos el tnsnames.ora, aparte de ser innecesario, no sirve para nada. Esto es así porque, como ya hemos dicho antes, el driver Thin no utiliza ningún cliente Oracle y, por tanto, no hace uso del fichero tsnames.ora. Lo que realmente tenemos que hacer para que nos funcione el ejemplo del zoo es, o bien poner directamente la IP del servidor Oracle en el fichero persistence.xml, o bien añadir al fichero C:\WINDOWS\system32\drivers\etc\hosts de Windows la máquina “maquetadb”:
130.78.225.44 maquetadb
En fin, espero que esto os ayude a la hora de probar el ejemplo. Además, os animo a todos a que aportéis vuestro granito de arena enviando todas aquellas cosas sobre JSF, JPA, Eclipse, etc. que puedan ser útiles e interesantes.
Publicar un comentario
<< Home