Desarrollo del Back-End
El siguiente diagrama muestra los componentes funcionales de la arquitectura de las aplicaciones que estamos desarrollando y el ambiente donde se despliega. Lo que llamamos backend se refiere a los componentes de la lógica o negocio y de la persistencia de la aplicación.

Responsabilidades de las capas
Esta arquitectura es una decisión de diseño en la que:
- La capa de servicios o recursos (API REST) es una capa muy "liviana" que solo se ocupa de:
- recibir las peticiones HTTP
- transformar los objetos json en DTOs
- invocar la lógica que devuelve entidades y recibe entidades
- transformar las entidades en DTOs
- transformar las excepciones de la lógica en status http
- La capa de lógica se ocupa de intermediar con la capa de persistencia y se ocupa de:
- validar las reglas de negocio
- invocar servicios de otras aplicaciones.
- invocar la capa de persistencia que devuelve entidades y recibe entidades
- La capa de persistencia tiene como responsabilidad:
- invocar los servicios de la base de datos
Los siguientes diagramas de clases ilustran para el ejemplo company_back los distintos elementos. En el primero, de abajo hacia arriba en azul, están las clases de recursos que inyectan una dependencia a la lógica a través de una interface.

En el segundo, se muestra que la lógica, a su vez, inyecta una referencia a la clase de persistencia. Mientras que los DTOs (no mostrados en el diagrama) solo son visibles para las clases Resource, las clases Entity son utilizadas tanto por los recursos como la lógica y la persistencia.

Vista de Desarrollo
Para facilitar el desarrollo del proyecto, la estructura de los distintos paquetes y recursos es la que se muestra continuación:
- El paquete
apicontiene las interfaces de la lógica - El paquete
ejbscontiene las clases de la lógica que son EJBs con estado - El paquete
entitiescontiene las clases de las entidades que van a ser persistidas - El paquete
exceptionscontiene las clases de las excepciones que se disparan desde la lógica. En este ejemplo solo hay una clase - El paquete
persistencecontiene las clases de persistencia que también son EJBs con estado - El paquete
test.logiccontiene las clases de prueba de la lógica - El paquete
test.persistencecontiene las clases de prueba de la persistencia - La carpeta de
resourcesestá el archivobeans.xmlypersistence.xmlpara configurar el acceso a la base de datos. - La carpeta de
resourcesen la carpetatestestá el archivobeans.xmlypersistence.xmlpara configurar el acceso a la base de datos de las pruebas.
- La carpeta de

En las secciones siguientes se presentan los conceptos básicos del diseño de cada una de las capas: