-
Notifications
You must be signed in to change notification settings - Fork 14
Logica
La lógica es la capa encargada de:
- Realizar la conexión entre la API y la persistencia;
- Analizar las reglas de negocio
- Crear las asociaciones entre las entidades.
Todas las clases encargadas de procesar la lógica serán EJB sin estado, por tanto se anotan con @Stateless.
En este ejemplo, haremos la lógica de la clase City, por tanto se creará una nueva clase CityLogic.
@Stateless
public class CityLogic
Se incluye un Logger para registrar los eventos.
private static final Logger LOGGER = Logger.getLogger(CityLogic.class.getName());
También debe crear una inyección de dependencias de la persistencia.
@Inject
private CityPersistence cityPersistence;
Para cada una de las operaciones en persistencia se debe crear un método en la lógica cuya responsabilidad es, entre otras cosas, delegarlo a la persistencia.
En los métodos de crear y actualizar se deben validar las reglas de negocio. En algunos casos, también se deben validar reglas de negocio al borrar.
El método para crear ciudad recibe una entidad, y retorna una nueva entidad la cual contiene el id
generado por la base de datos. En este método también se comprueba una regla de negocio en la que se garantiza que no se puedan crear dos ciudades con el mismo nombre. Si esto llega a suceder, se lanza una excepción con el mensaje adecuado que será utilizado para describirle al usuario el problema.
/**
* Se encarga de crear una ciudad en la base de datos.
*
* @param cityEntity Objeto de CityEntity con los datos nuevos
* @return Objeto de CityEntity con los datos nuevos y su ID.
*/
public CityEntity createCity(CityEntity cityEntity) throws BusinessLogicException{
LOGGER.log(Level.INFO, "Inicia proceso de creación de la ciudad");
if (cityPersistence.findByName(cityEntity.getName()) != null){
throw new BusinessLogicException ("Ya existe una ciudad con el nombre " + city.getName());
}
CityEntity newCityEntity = cityPersistence.create(cityEntity);
LOGGER.log(Level.INFO, "Termina proceso de creación de la ciudad");
return newCityEntity;
}
public CityEntity updateCity(Long cityId, CityEntity cityEntity) {
LOGGER.log(Level.INFO, "Inicia proceso de actualizar la ciudad con id = {0}", cityId);
CityEntity newCityEntity = cityPersistence.update(cityEntity);
LOGGER.log(Level.INFO, "Termina proceso de actualizar la ciudad con id = {0}", cityId);
return newCityEntity;
}
public List<CityEntity> getCities() {
LOGGER.log(Level.INFO, "Inicia proceso de consultar todas las ciudades");
List<CityEntity> lista = cityPersistence.findAll();
LOGGER.log(Level.INFO, "Termina proceso de consultar todas las ciudades");
return lista;
}
public CityEntity getCity(Long cityId) {
LOGGER.log(Level.INFO, "Inicia proceso de consultar la ciudad con id = {0}", cityId);
CityEntity cityEntity = cityPersistence.find(cityId);
if (cityEntity == null) {
LOGGER.log(Level.SEVERE, "La ciudad con el id = {0} no existe", cityId);
}
LOGGER.log(Level.INFO, "Termina proceso de consultar la ciudad con id = {0}", cityId);
return cityEntity;
}
public void deleteCity(Long cityId) {
LOGGER.log(Level.INFO, "Inicia proceso de borrar la ciudad con id = {0}", cityId);
cityPersistence.delete(cityId);
LOGGER.log(Level.INFO, "Termina proceso de borrar la ciudad con id = {0}", cityId);
}
Esta wiki fue creada para el curso ISIS2603 Desarrollo de Software en Equipos en la Universidad de los Andes. Desarrollado por Rubby Casallas con la colaboración de César Forero, Kelly Garcés, Jaime Chavarriaga y José Bocanegra. Universidad de los Andes, Bogotá, Colombia. 2021.
- Instalación del ambiente en máquina propia
- Configuración de la máquina virtual
- Ejecución del back
- Uso de Codespaces
- Clases
- Herencia
- Asociaciones
- Tipos de asociaciones
- Caso de estudio: la biblioteca
- Caso de estudio: la empresa
- Java Persistence API (JPA)
- Implementación paso a paso persistencia
- Ejemplo implementación persistencia
- Carga de datos en el Backend
- Relaciones compartidas (Shared) OneToOne
- Relaciones compartidas (Shared) OneToMany/ManyToOne
- Relaciones compuestas (Composite) OneToMany/ManyToOne
- Conceptos básicos de REST
- Diseño API REST
- Tutorial documentación diseño API
- Implementación API REST con Spring
- Tutorial implementación API