Historias de transacciones en bancos
¡Hola!, el día de hoy se han publicado en "El Camino de Java, Volumen 2", las últimas lecciones sobre Hibernate, donde te mostraré cómo integrarlo en tu aplicación web, cómo hacer paginación y especialmente cómo usar transacciones, que considero es el tema más importante, porque sucede algo curioso con las transacciones: En teoría son muy fáciles de utilizar, pero en la práctica pareciera que los programadores o no las consideran útiles, o no saben cómo sacarles provecho, a pesar de ser un concepto que ha estado disponible desde hace décadas, así que al igual que cuando hablamos de JDBC, considero importante hacer énfasis en este tema, y te voy a contar dos historias que me sucedieron relacionadas con las transacciones para que te des cuenta si realmente son importantes.
La primera me sucedió como cliente, fui a un banco a depositar un cheque, cuando el cajero estaba haciendo la operación mencionó que había problemas con el sistema y que iba a intentar otra vez, "Ah, ya funcionó" y me entregó mi recibo, pero cuando llegó el estado de cuenta, resulta que tenía ese mismo cheque depositado dos veces, nada más imagínate, le quitaron a la cuenta origen el doble del monto que había establecido en su cheque, por suerte para el banco, el problema se presentó conmigo porque lo arreglé con el otro cuentahabiente, pero si yo me hubiera negado o desconocido el error, legalmente ni el banco puede quitarme el dinero que ya tenía depositado, así que lo que hubieran terminado haciendo es pagarle al afectado.
La otra historia que me sucedió fue cuando estuve trabajando en uno de los bancos donde tuve la oportunidad de participar, y una de las cosas que estaba haciendo era revisar el sistema que usaban, un sistema muy avanzado que ni te menciono nombres para no hacer quedar mal a nadie, bueno pues lo que en este momento me interesaba era ver el código donde se realizaban las transacciones de transferencia, y me puse a investigar e investigar, los del banco no me querían soltar la información pero después de insistir no les quedó remedio y cual fue mi sorpresa cuando me entero que su sistema super robusto y avanzado, era solamente el cascarón, ¿puedes creerlo? al banco le decían que era totalmente transaccional, pero cuando me metí dentro de la transacción me di cuenta que era ficticia, solamente decían que estaban creando una transacción pero por dentro era el código más básico que te puedas imaginar, y por supuesto si se llegaba a presentar un error, entonces irremediablemente se iban a generar inconsistencias. Por si fuera poco, cuando les pregunté cómo le iban a hacer cuando se presentara un problema, su respuesta fue que todas las operaciones las escribían ¡en un archivo de texto!, y que en caso de problemas lo que harían era revisar a mano el archivo de texto para encontrar el problema y resolverlo; cuando me enteré, casi me voy de espaldas. Lo primero que pensé es que si hubiera tenido una cuenta en ese banco, inmediatamente la hubiera cancelado, pero después volví a reflexionar. ¿Tú crees que los demás bancos son mejores que esto?, ¡por supuesto que no!. Eso me paso hace muchos años, así que después de todo ese tiempo, lo menos que esperaría es que los bancos funcionen como deberían, pero por lo pronto, solo quiero hacerte consciente de que siempre deberías usar transacciones en todo lo que hagas con una base de datos, son fáciles de usar, son extremadamente robustas, pero muchos las ignoran, ¿por qué? pues seguramente por flojera, desgraciadamente la mentalidad común es: "si hasta ahora no ha fallado, entonces para que lo arreglamos", que es lo mismo que decir "si manejo a exceso de velocidad y nunca me he accidentado, entonces para qué manejar más lento"...
¡Hasta la próxima!
Raúl Cosío