当前位置:Gxlcms > 数据库问题 > JAVA事务处理 之 JDBC事务

JAVA事务处理 之 JDBC事务

时间:2021-07-01 10:21:17 帮助过:19人阅读

       首先了解一下,什么是事务:  程序中对数据库 进行的所有操作 , insert ,  update  , delete  存储过程 ....  还包括一些复杂的SQL语句 例如经典的银行出账问题 ,  要保证客户的钱 和银行的钱都是对的 不能出现差错 , 需要同时对数据库进行操作    银行扣钱 客户加钱 .  当然还有更复杂的  比如 同时要进行查询 删除 修改 ,, 等等      那么这就可以称之为一个整体 这就是事务.  java事务 在项目还是很常见的 基本上所有项目都会用到 , 所以还是很有必要深入了解一下. 

     当我们做错事时经常会感叹到  , 世界上有卖后悔药就好了,  当然现实生活中肯定没有 ,  但是在程序中就有 他就是 java事务 !  操作数据库出现任何问题的时候 都可以通过事务处理来解决   回到原来的状态 ,  这就是 我们常用的 事务回滚 (rollback)    .  好了 这就进入正题:   这次写的 数据迁移程序 用的是JDBC连接数据库 , 所以就只说下这个地方的用法吧 !  

      在connection类中提供了3个控制事务的方法:

   (1) setAutoCommit(Boolean autoCommit):设置是否自动提交事务;    (2) commit();提交事务;    (3) rollback();撤消事务;      首先,我们要设置事务的提交方式, connection类 中事务默认是自动提交的,  也就是操作一下数据库 自动提交一次事务,所以就需要我们设置下  手动提交事务:   con.setAutoCommit(false)  如果是ture 则自动提交 ,注意这是在程序开始的时候写的, 不要写在数据库操作代码的后面,     当对数据库操作完后 当然要提交下  con.commit() ; 证明这个整体是一个事务。     事务 一般都是配合 try catch 使用的 ,  所以我们在出现异常的时候就要吃颗后悔药 , 要在catch里面  执行事务回滚 con.rollback();   这样之前对数据库的所有操作 就已经完全恢复了为原来了!注意 必须在提交事务后才可以使用, 否则 程序是不会知道哪个是事务!     事务有四大特性:原子性 一致性 隔离性 持久性;  原子性:整个事务就像原子一样,是一个整体 不可再次进行分割。事务中对数据库的操作都是相互依赖的 要么全部执行 要么全部撤销!就像银行出账问题一样 必须同时执行SQL  否则银行钱扣了 客户缺没收到钱, 这岂不是乱套了!    一致性: 事务在处理的过程中必须要保证 对数据操作的正确性, 银行做500元交易的时候 银行减500   客户加500!    隔离性: 在进行事务处理的时候, 必须要保证 所需要的数据 是在其他事务修改它之前的数据 , 或是其他事务修改之后的数据。不能同时对同一数据进行事务处理!    持久性: 事务提交完后 对数据库的操作是永久性的  ,即使出现异常情况!
     

 

JAVA事务处理 之 JDBC事务

标签:

人气教程排行