Implementación de Repositorio en Java para Compras en Supermercado
Clase 29 de 35 • Curso de Java Spring
Contenido del curso
- 10

Conceptos básicos de JPA y anotaciones en Java
03:04 - 11

Gestión de Bases de Datos con Spring Data JPA en Java
05:24 - 12

Conexión y Configuración de Base de Datos en Spring Boot
12:09 - 13

Mapeo de Tablas a Clases con JPA: Creación de Entities en Java
14:00 - 14

Creación de Entities con Clave Primaria Compuesta en JPA
06:49 - 15

Relaciones JPA: Categorías, Productos, Compras y Clientes
10:37 - 16

Repositorios de Spring Data: Gestión Eficiente de Bases de Datos
07:54 - 17

Consultas avanzadas con Query Methods en Spring Data
09:30
- 18

Clase de Repositorio de Productos con Spring Framework
05:19 - 19

Patrón DataMapper en Proyectos Java: Implementación y Beneficios
13:37 - 20

Creación de Mapeadores con MapStruct en Java
11:22 - 21

Repositorio de Productos Orientado al Dominio en Java
09:27 - 22

Inyección de Dependencias en Spring Framework
04:34 - 23

Implementación de Servicios de Dominio en Java con Spring Framework
09:12 - 24

Creación de Controlador REST en Spring Boot
07:14 - 25

Anotaciones Spring para Exponer APIs RESTful
09:25
- 26

Control de Respuestas HTTP con ResponseEntity en Spring
09:11 - 27

Modelado de Dominio para Gestión de Compras en Supermercados
05:27 - 28

Mapeadores en Java para Conversión de Compras y Productos
10:45 - 29

Implementación de Repositorio en Java para Compras en Supermercado
09:01 - 30

Pruebas de API de Compras con Postman
02:56 - 31

Documentación de APIs con Swagger en Spring Boot
12:55
¿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
@Repositorypara que Spring la identifique correctamente. - También es necesario crear una interfaz que extienda
CrudRepositoryllamadaCompraCrudRepository.
- 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!