Icefaces, JBoss, Maven2 y EJB3: Parte 3

0
40029

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:
    https://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’.

Dejar respuesta

Please enter your comment!
Please enter your name here