🔒 Bloqueo Pesimista (Pessimistic Locking)
Cuando dos procesos intentan modificar el balance del mismo usuario al mismo tiempo (por ejemplo, una inyección de capital y una compra de USDC simultáneas), una aproximación tradicional podría causar una “lectura sucia” o una pérdida de actualización. La API mitiga este riesgo implementando un Bloqueo Pesimista de Escritura (PESSIMISTIC_WRITE) a través de Spring Data JPA. Esto instruye a PostgreSQL a ejecutar una cláusula SELECT ... FOR UPDATE, congelando la fila del usuario en la base de datos hasta que la transacción HTTP actual termine por completo.
🧮 Aritmética de Alta Precisión (BigDecimal)
El segundo pilar de la consistencia en el motor financiero es el control estricto sobre el cálculo numérico. Los tipos de datos primitivos de punto flotante (float o double) no son aptos para aplicaciones contables debido a los errores de redondeo binario inherentes a su representación de memoria.
Para garantizar que ningún centavo se pierda durante las conversiones de divisas, toda la lógica de negocio opera con BigDecimal utilizando la escala e integridad exigidas a nivel de base de datos (precision = 19, scale = 4).
🏦 Redondeo Bancario Estricto
Durante la operación de intercambio (Swap de MXN a USDC), el motor calcula la división de activos aplicando la constanteRoundingMode.HALF_UP (redondeo simétrico al valor más cercano), asegurando la precisión contable de la plataforma.