java学习

java学习

 

用配置事务

在applicationContext.xml里写:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p
="http://www.springframework.org/schema/p"
         xmlns:aop
="http://www.springframework.org/schema/aop"
         xmlns:tx
="http://www.springframework.org/schema/tx"
       xmlns:context
="http://www.springframework.org/schema/context"
       xsi:schemaLocation
="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

">
<!-- 使用注解支持事务
<tx:annotation-driven transaction-manager="transactionManager" />   -->
<!-- 添加jdbc的任务管理器 -->
<bean  id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 配置事务通知 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    
<tx:attributes>
        
<!-- name表示以什么开始的方法名,比如 add*表示add开头的方法
            propagation表示事务传播属性,不写默认有
         
-->
         
<tx:method name="save*" propagation="REQUIRED"/>
         
<tx:method name="del*" />
         
<tx:method name="update*"/>
         
<tx:method name="find*"  read-only="true"/>
    
</tx:attributes>
</tx:advice>
<!-- 配置事务切面 -->
<aop:config>
    
<aop:pointcut expression="execution(* com.yjw.service..*.*(..))" id="pointcut"/>
    
<aop:advisor advice-ref="txAdvice"  pointcut-ref="pointcut"/>
</aop:config>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"  value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl"  value="jdbc:mysql:///mydb"/>
<property name="properties">
<props>
    
<prop key="user">root</prop>
    
<prop key="password">root</prop>
    
</props>
</property>
</bean>
<bean id="simpleJdbcTemplate"  class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
    
<constructor-arg ref="dataSource"></constructor-arg>
</bean>
<!-- 在使用事务时不能配置jdbc模板,只能配置数据流 -->
<bean  id="userdao" class="com.yjw.dao.UserDao">
    
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="userService"  class="com.yjw.service.UserService">
    
<!-- name的值只和set方法后面的有关,要一样 -->
    
<property name="dao"  ref="userdao"></property>
</bean>
</beans>
在service里写:
public class UserService {

    
private  UserDao  userdao;
    
    

    
public void setDao(UserDao userdao) {
        
this.userdao = userdao;
    }

    
    
public  void  save(User user){
        userdao.save(user);
        
if(true){
            
throw new  RuntimeException();
        }

    
        userdao.save(user);
    }

    
//只读,会使性能提高,推荐使用
    
//@Transactional(readOnly=true)
    public  User findById(int id){
        
return userdao.findById(id);
    }

}

posted on 2012-05-03 22:17 杨军威 阅读(1681) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜