对自己要求要更严格一些,对别人要再多宽容一些。

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:

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 29002
  • 日志数: 52
  • 文件数: 1
  • 书签数: 4
  • 建立时间: 2009-04-20
  • 更新时间: 2010-02-02

RSS订阅

Open Toolbar