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)  編輯  收藏


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


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阜平县| 平安县| 五河县| 曲水县| 平阳县| 同心县| 鸡西市| 桑日县| 沽源县| 湖北省| 阿拉尔市| 六安市| 苗栗县| 平和县| 盘山县| 松江区| 通河县| 抚宁县| 闸北区| 财经| 西乌珠穆沁旗| 宁蒗| 沅陵县| 麻城市| 潜山县| 托里县| 连州市| 迁西县| 拜城县| 盐边县| 手机| 温州市| 花莲县| 安陆市| 读书| 航空| 来凤县| 桃园市| 太保市| 深州市| 延寿县|