Backend de Comparabien.com.pe con JakartaEE, DeltaSpike y Blaze Persistence

 


Pre requisitos


En este artículo vamos a recordar 2 artículos previos que son:


Código Fuente


El código fuente del backend está en https://github.com/joedayz/ConcentradorJakartaEE.
El código fuente del frontend está en https://github.com/joedayz/concentrador.

La intención es revelar el gran trabajo de mi colega Jorge Pingo.

Jakarta EE y MicroProfile


En este artículo no usaremos Spring Boot, vamos a usar JakartaEE y Microprofile para poder usar las APIs que nos permitan crear servicios Rest con JAX-RS y persistencia con JPA, CDI. 



Apis de Jakarta EE





Apis de Microprofile




Persistence.xml

En este archivo configuramos el recurso JDBC que tendremos en Payara Server.



 En Payara Server estará definido el JDBC Connection Pool:




Y JDBC Resources:



Blaze Persistence


Para el Backend vamos a usar esta API que te permite escribir JPA Criteria queries que usa características avanzadas de SQL.  El código fuente del proyecto está en GitHub y ahí puede encontrar varios casos de uso.




DeltaSpike


Otro proyecto a utilizar en este proyecto es DeltaSpike que consiste de un número de extensiones portables CDI que proveen características útiles para los desarrolladores de aplicaciones Java. 
Esta requiere una implementación CDI que este disponible en runtime.
Estas características son adicionales a las provistas por la especificación CDI. En este link puedes encontrar la lista completa:


En el archivo apache-deltaspike.properties configuraremos:

globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy = org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy
 

NOTA: 

Por defaecto el tipo de transacción usado por @Transactional es RESOURCE_LOCAL. Si tu configuras el tipo de  transaction-type="JTA" en el persistence.xml, tu tienes que habilitar otra TransactionStrategy en el beans.xml el cual es llamado org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy.






Context Root


El context root se define en el archivo glassfish-web.xml de esta manera:




Modelo

En el paquete model encontrará las entidades JPA y las entidades relacionadas a vistas.




Repository

Gracias a DeltaSpike podemos tener un Repository que implementará por nosotros los métodos para persistir nuestra entidad y ademas podemos crear nuestro propio Query de objetos.





Muy parecido a Spring Data. 



Service

La capa de negocio podrá usar la capa repository sólo usando @Inject.




En esta capa encontraremos la clase ConsultaProductoServiceImpl.java   que usará el Criteria API para armar la consulta según los filtros que tenemos en la aplicación. Ademas de eso, paginado.  


Para lograr esto se usa DeltaSpike:

import com.blazebit.persistence.deltaspike.data.Page;
import com.blazebit.persistence.deltaspike.data.PageRequest;
import com.blazebit.persistence.deltaspike.data.Pageable;
import com.blazebit.persistence.deltaspike.data.Sort;
import com.blazebit.persistence.deltaspike.data.Specification;


Controller

Finalmente en esta capa tendremos los REST endpoints. Empezamos configurando la clase que hereda de Application. 


Y luego puedes crear tus clases controladoras para manejar los endpoints que necesites:


Como se puede ver, se puede definir el scope, el path principal y el formato de intercambio (JSON) entre servidor y clientes:   

@RequestScoped
@Path("/entidad-financiera")
@Produces("application/json")
@Consumes("application/json")
public class EntidadFinancieraController 


Ejecutando el Backend

Para probar la aplicación, primero asegurese de iniciar su payara server.


Luego configure en su IDE el payara server para poder desplegar la aplicación ahí:




Al ejecutar la aplicación Ud. verá el siguiente resultado:


Y podrá probar este endpoint (http://localhost:8080/api/v1/concentrador/opcion) para ver las opciones disponibles:




Configurando el Backend en  el FrontEnd

Para poder usar el backend, colocamos el endpoint base en el archivo environment.



BASE_ENDPOINT: 'http://localhost:8080/api/v1/concentrador'

Al ejecutar la aplicación obtendremos el siguiente resultado:





Y como se aprecia se puede ver las opciones disponibles que nos devuelve el backend.

Esperamos que lo disfruten.

Enjoy!

Joe



Share:

0 comentarios:

Publicar un comentario