首先,让我们了解什么是事务。事务是一组任务或操作。它也可以看作是单个工作单元。
例如,某人预订了1500卢比的机票,那么此事务将是这样。
人员帐户(P)
开户(P)
旧余额= P.balance
新余额= P.balance-1500
P.balance =新余额
关闭账户(P)
该金额将添加到飞机帐户中。
通过使用ACID属性,可以更好地理解事务管理。ACID代表原子性,一致性,隔离性和耐久性。首先让我们了解这些术语。
1)原子性:由于Transaction是一组操作,因此此属性可确保执行事务的所有操作或不执行任何操作。事务绝不能被部分提交。
2)一致性:一致性是指数据库的状态,即数据库中的数据在事务之后或之前必须保持相同,不会对任何事务的数据库造成任何不利影响。数据库必须保持与执行事务之前相同的状态。
3)隔离:因为在数据库中许多事务是同时执行的,所以此属性确保每个事务都将被执行,就好像它是系统中唯一的事务一样。任何事务都不应影响任何其他事务,事务必须是独立的。
4)耐用性:即使系统发生故障,崩溃或断电等情况,耐用性属性也可以使数据库保存更新的数据。如果事务成功提交并成功进行并更改了数据,但由于某种原因系统失败并且无法将其写入到数据库中。磁盘上,数据库仍将保留更新的数据,并在系统重启后对其进行更新。
这全部与事务的ACID属性有关。现在让我们来看一个使用JDBC的事务管理的例子。
首先,您必须在数据库中创建一个名为“ employee”的表。在其中添加以下字段。
这是将存储员工数据的表。
这是JDBC中用于事务管理的eclipse类。
package logicProgramming; import java.io.DataInputStream; //从用户处获取输入 import java.sql.Connection; //建立连接 import java.sql.DriverManager; import java.sql.Statement; public class ExampleTransaction { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection cn=DriverManager.getConnection("jdbc:mysql://localhost:3306/Employee","root", "123"); cn.setAutoCommit(false); //// HIghLighted方法已启用true事务处理方法已禁用.....- Statement smt=cn.createStatement(); DataInputStream kb=new DataInputStream(System.in); System.out.println("Enter Employee Id"); int id=Integer.parseInt(kb.readLine()); System.out.println("Enter Employee Name"); String name=(kb.readLine()); System.out.println("Enter Employee Position "); String pos=(kb.readLine()); System.out.println("Enter Salary"); String salary =(kb.readLine()); String query="insert into employee values("+id+",'"+name+"','"+pos+"','"+salary+"')"; smt.executeUpdate(query); System.out.println("Do You Want to Commit Transaction \n1.Yes\n2.No"); String ans=kb.readLine(); if(ans.equalsIgnoreCase("Yes")||ans.equalsIgnoreCase("1")) { cn.commit(); //提交事务 System.out.println("Transaction SuccessFully Commited..."); } else { cn.rollback(); System.out.println("Transaction Rollbacked......"); } } catch(Exception e) { System.out.println(e.getMessage()); } } }
此代码的输出将如下所示: