[置顶] JAVA事务处理 之 JDBC事务

               最近要实现百万级大数据  数据迁移  在导入的过程中肯定会出现各种个样的问题,长度超长 , 数据为空 , 类型异常 。。等等

               所以我们在这里必须要用到java事务了 , 本次所使用的是JDBC连接数据库 所以就用到了JDBC事务! 

       首先了解一下,什么是事务:  程序中对数据库 进行的所有操作 , 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事务)