Backend (II)

En esta segunda parte voy a empezar a explicar como hacer la parte del servidor, usando, como dije en la primera parte de este articulo utilizare  JAVA 8, apoyándome en el framework Spring, versión 5.

Esta aplicación la he realizado con NetBeans 9, usando Tomcat 9 como servidor de aplicaciones. La podía haber realizado usando Spring Boot, lo que habría realizado más fácilmente y con menos configuración pero he querido hacerlo con Tomcat como ejercicio.

Esta el código fuente en: https://github.com/chuchip/yagesserver

Estos serán los archivos usados en mi aplicación:

Las dependencias, aparte de las básicas de Spring, son tener las siguientes librerías , de H2 Database e Hibernate.

Para más detalles y otras librerías menores, mirar el fichero pom.xml del proyecto.

En este ejemplo no uso  anotaciones XML, , todo se hace con anotaciones Java. Esta es el fichero con que se configura la base de datos.

La configuración es una típica para cualquier base de de datos. Lo único destacable es el uso de la clase EmbeddedDatabaseBuilder , en la función dataSource. Esta clase es muy útil para crear una base de datos embebida del tipo H2, HSQL o incluso DERBY. Como se ve en el código el uso es tan simple como especificar el tipo de base de datos, y después añadir los scripts necesarios (en este caso el de creación de las tablas y el de carga de datos). Esto nos creara un objeto EmbeddedDatabase que implementa el interface DataSource. Observerse que  los ficheros create-db.sql  e insert-db.sql, contienen sentencias SQL puras.**

**

Estos dos ficheros, deberán estar ubicados en la carpeta de resources (es decir, en el classpath)

Una vez que tenemos nuestro objeto DataSource ya solo resta crear nuestro EntityManager en la función entityManagerFactory, apoyándonos en las demás funciones de la clase.

Ahora creare las clases que representan los objetos de la base de datos, estos objetos están en la carpeta:

  1. Implementando nuestras tablas **como objetos.

**

En el paquete yages.yagesserver.model  tendremos las siguientes clases:

Calendario.java

CalendarioKey.java

Como se puede ver son dos simples POJOS, con una serie de anotaciones para su uso con JPA.

Solo destacar el uso de que como la tabla Calendario tiene un indice multiple, haremos uso de la anotación EmbebedId de tal manera que la clase Calendario  sera una @Entity y la clase CalendarioKey , que tendra los campos mes y ano (año 😀 ) sera la que tenga el indice y estara marcada como  @Embeddable.

En el paquete yages.yagesserver.dao creare mi repositoio crud con el siguiente interface:

Para mas datos sobre este interface que nos hace la vida tan fácil, podéis mirar el siguiente articulo de mi página.

En la clase CalendarioRepositorioService creo mi clase auxiliar que hace uso del repositorio.

Observese como anoto la clase  con la etiqueta @Service y @Transacional. Despues inyectamos el interface CalendarioRepository que es el que usare en las dos unicas funciones que tiene esta clase.

La tabla histVentas es prácticamente igual que la tabla calendario, también con un indice múltiple y la configuración es básicamente la misma, por lo cual no creo necesario explicarla.

Y por hoy ya vale. En la próxima entrada, veremos como implementar las peticiones REST

¡¡ Hasta pronto!!