Implementación de Repositorio en Java para Compras en Supermercado
Clase 29 de 35 • Curso de Java Spring
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
- Creación de la clase
CompraRepository
:- Dentro del paquete
persistence
, crea una nueva clase Java llamadaCompraRepository
. - Esta clase debe implementar
PurchaseRepository
.
- Dentro del paquete
- 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
llamadaCompraCrudRepository
.
- Asegúrate de anotar la clase con
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!