Class CategoryService

java.lang.Object
com.proyecto.jpa.service.CategoryService

@Service @Transactional(readOnly=true) public class CategoryService extends Object
Servicio para la gestión de categorías (Capa de Negocio).

Implementa la lógica de negocio relacionada con las categorías de productos, coordinando las operaciones con el repositorio y aplicando reglas de negocio.

Arquitectura de 3 Capas

 CategoryController (Capa de Presentación)
         ↓
 CategoryService (Capa de Negocio) ← Esta clase
         ↓
 CategoryRepository (Capa de Datos)
 

Operaciones en Cascada

Al eliminar una categoría, todos sus productos asociados se eliminan automáticamente gracias a la configuración cascade = CascadeType.ALL en la entidad Category.

Since:
1.0.0
Version:
1.0.0
Author:
Proyecto JPA
See Also:
  • Constructor Details

    • CategoryService

      @Autowired public CategoryService(CategoryRepository categoryRepository)
      Constructor con inyección de dependencias.
      Parameters:
      categoryRepository - repositorio de categorías
  • Method Details

    • findAll

      public List<Category> findAll()
      Obtiene todas las categorías del sistema.
      Returns:
      lista de todas las categorías
    • findById

      public Optional<Category> findById(Long id)
      Busca una categoría por su ID.
      Parameters:
      id - el ID de la categoría
      Returns:
      un Optional con la categoría si existe
    • findByName

      public Optional<Category> findByName(String name)
      Busca una categoría por su nombre.
      Parameters:
      name - el nombre de la categoría
      Returns:
      un Optional con la categoría si existe
    • existsByName

      public boolean existsByName(String name)
      Verifica si existe una categoría con el nombre dado.
      Parameters:
      name - el nombre a verificar
      Returns:
      true si existe, false en caso contrario
    • save

      @Transactional public Category save(Category category)
      Crea o actualiza una categoría.

      Si la categoría no tiene ID, se crea una nueva. Si tiene ID, se actualiza.

      Parameters:
      category - la categoría a guardar
      Returns:
      la categoría guardada con su ID asignado
      Throws:
      IllegalArgumentException - si la categoría es null o el nombre está vacío
    • deleteById

      @Transactional public void deleteById(Long id)
      Elimina una categoría por su ID.

      Operación en Cascada: Al eliminar la categoría, todos los productos asociados se eliminarán automáticamente debido a la configuración de cascada.

      Parameters:
      id - el ID de la categoría a eliminar
      Throws:
      IllegalArgumentException - si no existe una categoría con ese ID
    • count

      public long count()
      Cuenta el número total de categorías.
      Returns:
      el número total de categorías