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 楊軍威 閱讀(1685) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 岢岚县| 措美县| 乃东县| 修文县| 敦化市| 唐河县| 上饶市| 靖远县| 长乐市| 竹山县| 札达县| 交口县| 天长市| 新乡市| 新营市| 高青县| 临沭县| 鲁山县| 隆安县| 独山县| 抚宁县| 酉阳| 文山县| 南溪县| 沾化县| 嘉定区| 车险| 屏山县| 原平市| 涞源县| 盐津县| 云霄县| 高雄县| 乐清市| 秦安县| 厦门市| 邵阳县| 彰化市| 五大连池市| 夏河县| 铁岭县|