Uso simple de las transacciones Java
Se preguntarán los asuntos de Java durante algunas entrevistas.
Durante la entrevista, lo primero que debemos responder es: las transacciones pueden garantizar la integridad y consistencia de los datos.
Si las habilidades son más profundas: solo hable sobre algunos principios (establezca no enviar tareas antes de que comience la tarea y envíe tareas después de que se completen todas las tareas.
Si la tarea se desconecta en el medio, se realizará una reversión y se cancelará la tarea anterior), y se dará un ejemplo simple (como la cuestión de ahorrar y retirar dinero.
Por ejemplo: el banco transfiere dinero entre dos cuentas, transfiere de la cuenta A a la cuenta B por 1,000 yuanes. El sistema primero reduce la cuenta A por 1,000 yuanes, y luego agrega 1,000 yuanes a la cuenta B. Si todas las ejecuciones son exitosas, la base de datos está en consistencia; Si solo la modificación de la cantidad de cuenta A se completa sin aumentar la cantidad de la cuenta B, la base de datos está en un estado inconsistente, y la operación anterior debe cancelarse. )
Este artículo discute brevemente las transacciones Java. Cuando preguntamos sobre las transacciones de Java, necesitamos saber que esto está relacionado con las bases de datos.
uno. Veamos primero un código simple
Use JDBC para realizar el procesamiento de transacciones
public int delete (int sid) {// clase que implementa la conexión de base de datos DataBASEConnection dbc = new DataBASEConnection (); // Obtener el objeto de conexión Conexión Con = dbc.getConnection (); intente {con.setAutOcommit (false); // Cambie el método de confirmación predeterminado de las transacciones JDBC dbc.ExecuteUpdate ("Eliminar de Xiao donde id =" + Sid); dbc.ExecuteUpdate ("Eliminar de xiao_content donde id =" + sid); dbc.ExecuteUpdate ("Eliminar de xiao_affix donde bylawid =" + sid); con.commit (); // confirmar la transacción JDBC con.setAutOcommit (true); // restaurar el método de confirmación predeterminado de la transacción JDBC dbc.close (); regresar 1; } catch (excepción exc) {con.rollback (); // rolle back jdbc transacción dbc.close (); regreso -1; }} El código anterior es una ejecución simple de una transacción Java.
Se realizan las tres veces anteriores de operaciones de eliminación. Mientras uno falle, la tarea se volverá hacia atrás, lo que es equivalente al éxito juntos o no se hace nada.
Si no hay gestión de transacciones, la ejecución anterior se actualizará en la base de datos de inmediato.
Salga de las tareas posteriores donde la ejecución falle y no se puede garantizar la consistencia de los datos.
dos. El concepto básico de las transacciones de Java
Atomicidad: una transacción es una operación completa. Las operaciones de la transacción son inseparables (atómicas);
O ejecutarlos o ninguno de ellos
Consistencia: cuando se completa una transacción, los datos deben estar en un estado consistente.
Aislamiento: todas las transacciones concurrentes que modifican los datos se aislan entre sí, lo que significa que la transacción debe ser independiente.
No debe depender o afectar otras transacciones de ninguna manera (durabilidad): después de completar una transacción, sus modificaciones a la base de datos se mantienen permanentemente, y el registro de transacciones puede mantener la permanente de la transacción.
Descripción del procesamiento de la transacción Java: si realiza múltiples operaciones en la base de datos, cada ejecución o paso es una transacción.
Si la operación de la base de datos no se ejecuta en un cierto paso o se produce una excepción, lo que resulta en la falla de la transacción, por lo que algunas transacciones se ejecutan y otras no se ejecutan.
Esto lleva a reversiones de transacciones y cancela operaciones anteriores ...
En una operación de base de datos, una transacción se refiere a una unidad de trabajo inseparable compuesta por una o más declaraciones SQL que actualizan la base de datos.
Solo cuando todas las operaciones en la transacción se completan normalmente se pueden enviar toda la transacción a la base de datos. Si no se completa una operación,
Toda la transacción debe ser revocada.
Por ejemplo, en las transacciones de transferencia bancaria, suponga que Zhang San transfiere 1,000 yuanes de su cuenta a la cuenta de Li Si, los estados de SQL relevantes son los siguientes:
Actualizar la cuenta Conjunto de dinero = Monery-1000 Where Name = 'Zhangsan'
Actualizar la cuenta establecida dinero = monery+1000 donde nombre = 'lisi'
Estas dos declaraciones deben procesarse como una transacción completa. Esta transacción solo se puede enviar cuando ambos se ejecutan con éxito.
Si una oración falla, toda la transacción debe ser revocada.
Hay 3 métodos para controlar las transacciones en la clase de conexión:
(1) setAutOcommit (boolean Autocommit): Establezca si debe enviar automáticamente transacciones;
(2) cometer (); comprometerse(); transacción de cometer;
(3) reversión (); deshacer la transacción;
En la API JDBC, el caso predeterminado es confirmar automáticamente las transacciones, es decir, cada actualización de la base de datos representa una transacción.
Después de que la operación sea exitosa, el sistema llama automáticamente a Commit () a Commit, de lo contrario, se llamará a Rollback () para deshacer la transacción.
En la API JDBC, el envío de transacciones automáticas se puede prohibir llamando a setAutOcommit (falso).
Luego puede usar múltiples declaraciones SQL que actualizan la base de datos como una transacción. Después de completar todas las operaciones, se llama Commit () para realizar la presentación general.
Si una de las operaciones SQL falla, el método Commit () no se ejecutará, pero se generará la Certificación SQLEX correspondiente.
En este momento, puede ver la excepción en el bloque de código, llame al método Rollback () para deshacer la transacción.
En términos generales, los desarrolladores que se especializan en el desarrollo de bases de datos deben tener una comprensión profunda de las transacciones.
Pero el programador promedio no necesita pasar mucho tiempo en esto. Solo comprende el efecto general.
Gracias por leer, espero que pueda ayudarte. ¡Gracias por su apoyo para este sitio!