对自己要求要更严格一些,对别人要再多宽容一些。
Spring事务管理(编程方式)
上一篇 /
下一篇 2009-12-29 15:25:06
/ 个人分类:JAVA学习
Spring的事务管理主要有两种方式:编程式同声明式。
其中吧编程式主要有是:使用TransactionTemplate和直接使用PlatformTransactionManager 。
下面介绍下,编程方式中的TransactionTemplate:
1.applicationContext配置文件
<!-- JDBC模板--> <beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"> <propertyname="dataSource"> <reflocal="dataSource"/> </property> </bean> <!--数据源--> <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"> <propertyname="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <propertyname="url"> <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value> </property> <propertyname="username"> <value>anita</value> </property> <propertyname="password"> <value>123</value> </property> </bean> <!--事务模板--> <beanid="transactionTemplate"class="org.springframework.transaction.support.TransactionTemplate"> <propertyname="transactionManager"> <reflocal="transactionManager"/> </property> </bean> <!-- jdbc事务管理器--> <beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <propertyname="dataSource"> <reflocal="dataSource"/> </property> </bean> |
2.测试代码:
publicclassJdbcTemplateTest { /** *@paramargs */ publicstaticvoidmain(String[] args) { //TODOAuto-generated method stub Resource resource=newClassPathResource("/applicationContext.xml"); BeanFactory factory=newXmlBeanFactory(resource); //实例化JDBC模版,包含了获取数据源dataSource等 finalJdbcTemplatejdbctemplate=(JdbcTemplate) factory.getBean("jdbcTemplate"); //执行插入数据操作 jdbctemplate.execute("insert into student values('400','300','300')"); //实例化事务模版 TransactionTemplate transactionTemplate=(TransactionTemplate) factory.getBean("transactionTemplate"); //如果发生异常,则在此处回滚,实例化TransactionCallbackWithoutResult transactionTemplate.execute(newTransactionCallbackWithoutResult(){ @Override protectedvoiddoInTransactionWithoutResult(TransactionStatus status) { //TODOAuto-generated method stub try{ jdbctemplate.execute("insert into student values ('400','300','300')"); } catch(Exception ex) { //回滚 status.setRollbackOnly(); System.out.println("回滚事务"); } } }); |
收藏
举报
TAG: