Laboratorio 4 – Entidades JPA

Objetivos

  • Desarrollar el nivel de persistencia utilizando entidades JPA. Esto incluye el desarrollo de las clases de entidad necesarias para el proyecto Muebles de los Alpes.

Herramientas

Desarrollo del Laboratorio

Importante

  • Para que el contenedor pueda manejar adecuadamente el pool de conexiones y la aplicación funcione correctamente es necesario copiar el driver de Oracle a la carpeta <instalación de glassfish>\domains\domain1\lib. Tenga en cuenta que el servidor se debe reiniciar cuando se copie el archivo y que el nombre del dominio puede ser diferente a domain1.

Realice las siguientes modificaciones al código base del laboratorio:

  1. Estudie el modelo de dominio representado por las clases (y sus relaciones) ubicadas en el paquete com.losalpes.entities.
  2. Cree una unidad de persistencia para el proyecto.
  3. Convierta el modelo de dominio estudiado en el numeral 1 a un modelo de entidades persistentes. Para esto Ud. debe hacer lo siguiente:
    1. Definir las entidades JPA necesarias para completar la funcionalidad de la aplicación. Para esto, anote todas las entidades persistentes del paquete com.losalpes.entities con la anotación @Entity y el identificador de cada una con la anotación @Id. No olvide tener en cuenta el enunciado de la aplicación.
    2. Anotar las relaciones entre las diferentes entidades de acuerdo con su lógica de asociación.
      NOTA: Ud. puede cambiar las relaciones entre las clases del modelo de domino como mejor le parezca, tenga en cuenta los requerimientos del numeral 5 para guiar los cambios que efectúe. Sin embargo, las entidades RegistroVenta y Usuario deben estar asociadas por una relación bidireccional. No olvide colocar las anotaciones correspondientes para satisfacer dicha relación. De igual forma, usted está en libertad de usar el tipo de propagación de operaciones (cascade) adecuado según su modelo de persistencia.
  4. Implemente todos los métodos del bean de sesion sin estado ServicioPersistencia que se encuentra en el paquete com.losalpes.servicios (no olvide inyectar una dependencia al EntityManager).
  5. Defina, en lenguaje JPQL, las consultas necesarias para que los siguientes reportes de la aplicación funcionen correctamente:
    1. Mostrar el historial de compras de un usuario dado. En la página web se debe desplegar una tabla con la fecha de compra, mueble, cantidad adquirida y valor de cada compra.
    2. Mostrar los tres (3) muebles más vendidos. En la página web se debe desplegar una tabla con el nombre del mueble y la cantidad vendida (se debe mostrar en orden descendente).
    3. Mostrar el top 5 de compradores de un país determinado. En la página web se debe desplegar una tabla que muestra la siguiente información de cada comprador del top: (a) el nombre, (b) su login, (c) el número de compras efectuadas y (d) la cantidad total de dinero gastado en la tienda (Nota: El mejor comprador es quien ha gastado más dinero).
  6. Implemente las páginas web que permitan visualizar los resultados de la ejecución de las consultas implementadas en el numeral anterior.

Entregables

La entrega del laboratorio se debe hacer por Sicuaplus y consiste en un archivo .zip (login.zip) en donde se encuentre el proyecto completo del laboratorio.

Evaluación

La evaluación de este taller se hará de acuerdo con la siguiente plantilla de calificación.