Spring 理解 事务管理

来源:互联网 发布:idea创建web项目ubuntu 编辑:程序博客网 时间:2024/04/25 13:13

首先要理解什么是事务(transaction) :

事务(Transaction)是并发控制的基本单位。所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转帐工作:从一个帐号扣款并使另一个帐号增款,这两个操作要么都执行,要么都不执行。所以,应该把他们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。

所谓的事物管理也就是

#当执行这个操作时:**重点内容**public void create(String name, Integer age, Integer marks, Integer year){        TransactionDefinition def = new DefaultTransactionDefinition();        TransactionStatus status = transactionManager.getTransaction(def);**#根据指定的传播行为,该方法返回当前活动事务或创建一个新的事务。**        try {            String SQL1 = "insert into Student (name, age) values (?, ?)";            jdbcTemplateObject.update( SQL1, name, age);            // Get the latest student id to be used in Marks table            String SQL2 = "select max(id) from Student";            int sid = jdbcTemplateObject.queryForObject(SQL2, Integer.class);            String SQL3 = "insert into Marks(sid, marks, year) " +                    "values (?, ?, ?)";            jdbcTemplateObject.update( SQL3, sid, marks, year);            System.out.println("Created Name = " + name + ", Age = " + age);            transactionManager.commit(status);**#该方法提交给定的事务和关于它的状态。**       } catch (DataAccessException e) {            System.out.println("Error in creating record, rolling back");            transactionManager.rollback(status);#如果出现异常该方法执行一个给定事务的回滚。从而达到保持数据一致性的效果,以避免**从一个帐号扣款并使另一个帐号增款**这一事务中出现一方(扣款方)出错而另一方没有赠款的情况下扣款方已被扣款            throw e;        }        return;    }
原创粉丝点击