0:009:01

Recursos

Resumen

¿Cómo crear la implementación de nuestro repositorio compra?

Para implementar un repositorio que interactúe con la base de datos en relación a las compras, primero es necesario crear la clase CompraRepository, que implementará el PurchaseRepository. Asegúrate de anotar esta clase como @Repository para que Spring la reconozca como un componente o bean necesario para la comunicación con la base de datos. Entonces, ¿cómo empezamos?

Pasos iniciales para crear el repositorio

  1. Creación de la clase CompraRepository:
    • Dentro del paquete persistence, crea una nueva clase Java llamada CompraRepository.
    • Esta clase debe implementar PurchaseRepository.
  2. Anotaciones y configuración:
    • Asegúrate de anotar la clase con @Repository para que Spring la identifique correctamente.
    • También es necesario crear una interfaz que extienda CrudRepository llamada CompraCrudRepository.

Interacción con la base de datos

Para poder interactuar adecuadamente, el CompraCrudRepository debe extender de CrudRepository y recibir como parámetros la entidad Compra y su clave primaria, que en este caso es un Integer.

public interface CompraCrudRepository extends CrudRepository<Compra, Integer> { // Métodos adicionales según el caso }

Luego, debes inyectar esta interfaz en tu CompraRepository junto al mapper necesario:

@Autowired private CompraCrudRepository compraCrudRepository; @Autowired private PurchaseMapper purchaseMapper;

Implementación de métodos fundamentales

Método getAll

El método getAll recupera todos los registros de compras y los convierte a objetos del dominio:

public List<Purchase> getAll() { List<Compra> compras = (List<Compra>) compraCrudRepository.findAll(); return purchaseMapper.toPurchases(compras); }

Método getByClient

Para recuperar compras por cliente, es necesario crear un query método dentro del CompraCrudRepository:

Optional<List<Compra>> findByClienteId(String clientId);

Y emplearlo dentro de CompraRepository:

public Optional<List<Purchase>> getByClient(String clientId) { return compraCrudRepository.findByClienteId(clientId) .map(compras -> purchaseMapper.toPurchases(compras)); }

Guardado en cascada

Para garantizar que la información se guarde en cascada, asegúrate de que la entidad Compra conozca sus productos y viceversa. Implementa el patrón de relaciones cascade y mappedBy en las entidades correspondientes.

@OneToMany(mappedBy = "compra", cascade = CascadeType.ALL) private List<Producto> productos;

Configura la relación en la entidad CompraProducto para que los productos puedan asociarse correctamente a una compra.

Método save

public Purchase save(Purchase purchase) { Compra compra = purchaseMapper.toCompra(purchase); compra.getProductos().forEach(producto -> producto.setCompra(compra)); return purchaseMapper.toPurchase(compraCrudRepository.save(compra)); }

¿Qué sigue después de implementar el repositorio?

Este tutorial se centra en la implementación del repositorio, pero recuerda que aún faltan los servicios y controladores para completar la capa de negocio y presentación. Te animo a desarrollar estos componentes adicionales y compartir tus resultados. Si enfrentas problemas, recuerda que siempre puedes buscar soluciones en el sistema de archivos del curso o las discusiones comunitarias. ¡Sigue adelante con tu aprendizaje!

Implementación de Repositorio en Java para Compras en Supermercado

Curso de Java Spring

Clase 29 de 35

Clase 29 / 35