事务在java中表示为执行数据库操作过程中更新数据库中各种数据项的一个程序执行单元(unit),事务是为解决数据安全操作提出的,事务控制实际上就是控制数据的安全访问。
注:数据项是数据的不可分割的最小单位,如“name”、“id”、“age”
通常在
由事务开始(begin transaction)
操作1:
操作2:
.
.
…
事务结束(end transaction)
之间执行的全体操作组成。
1、事务的ACID原则
(1)原子性 :事务是数据库的逻辑工作单位,而且是必须是原子工作单位,对于其数据修改,要么全部执行,要么全部不执行。(比如一个事务操作“A”)
(2)一致性:事务在完成时必须是所有的数据都保持一致状态,(个人感觉像化学中的质量守恒)
(3)隔离性:一个事务的执行不能被其他事务影响
()持久性:一个事务一旦提交,事物的操作便永久性的保存在DB中。即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。(一个事务对于数据库的操作结果是永久的,不是临时的)
2、java中的事务有三类JDBC事务、容器事务、JTA(JAVA Transaction APT)事务
JDBC事务
在JDBC中处理事务,都是通过Connection完成的。同一事务中所有的操作,都在使用同一个Connection对象。JDBC事务默认是开启的,并且是默认提交。
例:
事务开启:
conn = DriverManager.getConnection(url, user, password)
/设置是否为自动提交事务,如果true(默认值为true)表示自动提交,也就是每条执行的SQL语句都是一个单独的事务,如果设置为false,需要手动提交事务。/
conn.setAutoCommit(false);
操作1:Statement stmt = conn.createStatement();
操作2:stmt.executeUpdate(sql);
.
…
事务提交:
conn.commit();
conn.setAutoCommit(true); //自动提交
如果失败则回滚
coon.rollback():回滚结束事务。事务失败通过调用rollback()方法进行回滚。
最后释放数据库连接
freeConnection();
文章内容来自:
https://blog.csdn.net/weixin_37934748/article/details/82774230