首先要理解什么是事务(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; }
AIEarth是一个由众多领域内专家博主共同打造的学术平台,旨在建设一个拥抱智慧未来的学术殿堂!【平台地址:https://devpress.csdn.net/aiearth】 很高兴认识你!加入我们共同进步!