jueves, 6 de junio de 2013

Ejercicios de clase. Clase 8: dar persistencia a los datos de un conjunto de personas.




 

Siguiendo el mismo esquema del ejemplo que se enlaza al final del post anterior, crea el soporte necesario para dar persistencia a los datos de una persona (Id/DNI, Nombre, Primer Apellido, Segundo Apellido y Fecha de Nacimiento). Puedes utilizar los asistentes de NetBeans para crear una aplicación CRUD JSF. 

Pasos:


1. Crea una nueva base de datos. En el menú Window>Services de NetBeans podrás abrir el panel donde se visualizan las bases de datos (Databases). Haz clic con el botón derecho sobre la entrada "Java DB" dentro del apartado Databases y selecciona Create Database... Dale un nombre a la base de datos, como por ejemplo, Persona. Como nombre de usuario utiliza APP ya que es un esquema que se crea por defecto junto con la base, lo que te permitirá disponer rápidamente de acceso sin necesidad de ejecutar ninguna instrucción adicional. Añade una contraseña (en nuestro ejemplo, 123) Al pulsar el botón OK deberías ver que aparece enumerada la base de datos Persona bajo el apartado de Java DB. Además, aparecerá una entrada "jdbc:derby://localhost:1527/Persona [APP on APP]" bajo el nodo Databases.


 2. Una vez creada la base de datos, proseguimos con la creación de la tabla PERSONA. Para ello vete al mencionado nodo "jdbc:derby://localhost:1527/Persona [APP on APP]" y sigue la ruta APP>Tables. Obviamente, está vacío, a la espera de que creemos nuestra primera tabla. Haz clic con el botón derecho sobre "Tables". En el menú contextual que aparece podrás optar por crear la tabla indicando una a una la especificación de sus atributos (Create table...) Otra opción es seleccionar "Recreate table..." que te permite importar un script con las sentencias SQL necesarias para su creación. Puedes descargar el script para nuestra tabla: PERSONA.grab



3. El siguiente paso es crear una entidad de persistencia Persona pero antes necesitamos un nuevo proyecto web. Podrás hacerlos desde el menú File>New Project...>Java Web>Web application. En nuestro caso, le hemos llamado "EjercicioPersona". Para crear la entidad Persona vamos a File>New File...>Persistence>Entity Classes from Database) y seguimos los pasos del asistente.

a. Accediendo al asistente para crear entidades de persistencia a partir del esquema de base de datos.
b. En el apartado Data Source del segundo paso del asistente debemos crear un nombre JNDI para designar a nuestra conexión (opción New Data Source... que aparece al final de la lista desplegable de data sources)
c.  Seleccionamos nuestra única tabla PERSONAS
d. Escribimos un nombe de paquete donde incluir la clase entidad.

e. La entidad JPA ha sido generada con éxito y aparece en el paquete especificado con anterioridad.

4. Ya sólo queda crear toda la infraestructura de facelets para dar soporte a la interfaz gráfica y las clases que implementa el patrón DAO para manejar la entidad permitiendo todas las operaciones habituales sobre una tabla: guardar, eliminar, actualizar y buscar. Para ello, de nuevo, empleamos el asistente desde el menú File > New File...>Java Server Faces>JSF Pages from Entity Classes y seguimos todos los pasos.

a. Accedemos al asistente para crear páginas JSF a partir de la clase entidad.

b. Seleccionamos nuestra única tabla PERSONA

c. Aunque, por defecto, el asistente emplea el mismo paquete para todas las clases, conviene separar los Bean de Session en un subpaquete distinto, para mayor claridad en la estructuración del código.

d. Al finalizar el asistente, se crearán todos los nuevos componentes necesarios y ya dispondremos de una aplicación perfectamente funcional.


5. Por defecto, todas las etiquetas y mensajes aparecerán en inglés pero éstas se hayan definidas en un archivo de propiedades "Bundle.properties" que podremos traducir. Puntualmente, algunas de ellas pueden estar definidas directamente en los atributos de los tags dentro de los facelets. 


6. Asimismo, las fechas son tratadas con el patrón anglosajón en el que el mes precede al día. Conviene modificar todos los facelets donde aparezca dicho patrón.



1 comentario: