Icefaces, JBoss, Maven2 y EJB3: Parte 3

Icefaces, JBoss, Maven2 y EJB3: Parte 3.

Bueno, creo que en esta tercera parte es ya hora de comenzar a desarrollar nuestro negocio. Para el tutorial, he pensado en una pequeña biblioteca con libros, socios, autores etc…

  1. Modelo de negocio.

    Lo primero que voy a hacer es mostraros un pequeño diagrama de clases UML que representa las entidades del dominio del problema (de la Biblioteca). Como todo diagrama UML, es discutible y mejorable, pero creo que es suficiente para el tutorial:




De manera textual, lo que quiero representar es lo siguiente:

  • Un libro puede tener uno o varios autores, y un autor puede serlo de al menos un libro.

  • Un libro pertenece a una categoría (podría pertenecer a varias, pero no voy a complicar más el tema), y una categoría puede estar asociada a varios libros. También podría haber hecho que la categoría tuviese una relación consigo misma pudiéndose crear un árbol de categorías, pero no lo he hecho por la misma razón de antes

  • Un socio puede disponer de todos los libros que quiera y un libro puede o no estar prestado. Podría haber modelado esta asociación como una clase de la relación (clase Préstamo con una fecha de caducidad del préstamos etc…) pero no lo he hecho por el mismo motivo de antes.

  • Un socio tiene una información de contacto. Esta relación ‘uno a uno’ que la he modelado como una composición podría haberla evitado, es decir, podría haber modelado esta información dentro de la clase Socio, pero lo he forzado así para tener una relación ‘uno a uno’. Es más, incluso así, si llevásemos este modelo a su implementación en la base de datos, podríamos mantener esta información en la tabla ‘Socio’ haciendo que la clase InformacionContacto fuese ‘Embeddable’ dentro de la clase Socio.

  1. Modelo de datos.

    Vamos ahora a crear las tablas en la base de datos MySQL. Me he creado un esquema llamado ‘biblioteca’ y le he dado todos los permisos al usuario ‘paco’ sobre el esquema. A continuación os dejo el script de creación de las tablas para nuestro modelo ‘BibliotecaDDL.sql:

    Os regalo también un script para rellenar datos: ‘BibliotecaDML.sql’

  2. Creando las entidades con anotaciones.

    Ahora, vamos a crear nuestras clases de entidad. En un principio lo vamos a hacer con anotaciones. En el siguiente tutorial de la saga usaremos el descriptor ‘orm.xml’ para mostrar como se haría y las implicaciones de que ambas formas convivan.

En el paquete: com.autentia.tutoriales.modelo.entidades

  • Clase TransferObject. Clase abstracta padre de las demás que agrupará las características comunes:

  • Clase Categoria:

  • Clase Autor:

  • Clase Libro:

  • Clase Socio:

  • Clase InformacionContacto:

  1. Creamos el DAO.

    Primero creamos el Interfaz (únicamente local) en el paquete:com.autentia.tutoriales.modelo.services

    Solamente he incluido algunos métodos selectores.

    Ahora la implementación:

  2. Creamos el datasource en Jboss:

    Como ya sabréis, para definir un datasource en Jboss nos creamos un fichero descriptor: biblioteca-ds.xml

Lo desplegamos en el servidor en /<Jboss>/server/default/deploy

Nos creamos el descriptor de persistencia para nuestro Modelo en /src/main/java/META-INF : persistence.xml

  1. Vamos a probar esto.

    Ciertamente habría que probar esto bien, con pruebas unitarias, embedded Jboss y todo eso, pero para eso podéis intentarlo vosotros siguiendo el tutorial: http://www.adictosaltrabajo.com/tutoriales/ejb-3-junit-with-jboss/

    Yo, por motivos de tiempo, voy a preparar una prueba algo más ‘cutre':

    Modificamos el código del método test() de la clase TestImpl:



    Mostramos el resultado de la consola al invocar a la página inicial: http://localhost:8080/Web/


    Bueno, en el próximo tutorial de la saga continuaremos tratando de mapear las entidades a la base de datos usando el descriptor ‘orm.xml’.