真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Spring中@Transactional如何配置

這篇文章將為大家詳細講解有關(guān)Spring中@Transactional如何配置,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)專注于上蔡網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供上蔡營銷型網(wǎng)站建設(shè),上蔡網(wǎng)站制作、上蔡網(wǎng)頁設(shè)計、上蔡網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)公司服務(wù),打造上蔡網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供上蔡網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

  • 背景:

    1. spring老版本是使用TransactionProxyFactoryBean來實現(xiàn)對spring的事務(wù)進行配置(缺點自己google,一大堆的缺點)

    2. spring2.x引入了AOP(面向切面的編程)

    3. 當(dāng)初項目也是喜歡用spring xml方式的配置,后來項目使用spring3.x版本,看到了@Transactional注解,個人覺得挺方便和實用。(具體什么原因,說不清)

  • 上代碼

    1. 
      
      
      
          
      
          
      
          
              
                  classpath:/db.properties
              
          
      
          
      
      	
      		
      		
      			classpath:/sqlmap-config.xml
      		
      		
      			classpath*:/sqlmap/*.xml
      		
      	
      
          
              
              
              
      
              stat
      
              20
              1
              60000
              1
      
              60000
              300000
      
              SELECT 'x'
              true
              false
              false
      
              true
              20
          
      
          
          
      
      	
          
      	
      
          
          
          
      
          
          
          
              
          
      
      
    2. package com.xun.spring3.src.dao;
      
      import com.ibatis.sqlmap.client.SqlMapClient;
      import org.apache.commons.lang.StringUtils;
      import org.springframework.beans.factory.annotation.Autowired;
      import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
      
      import javax.annotation.PostConstruct;
      import java.lang.reflect.ParameterizedType;
      import java.lang.reflect.Type;
      
      /**
       * 要求每個dao的命名以 Dao結(jié)尾
       * 泛型 ENTITY - 具體哪個實體
       * 泛型 PRIMARYKEY - 具體主鍵的類型
       * @Date : 2014/9/7 0007 20:41
       * @From : spring3-test
       * @Author : hebad90@163.com
       */
      public class BaseDao extends SqlMapClientDaoSupport {
      
          @Autowired
          private SqlMapClient sqlMapClient;
      
          @PostConstruct
          private void initSuper() {
              /**
               * 初始化父類
               */
              super.setSqlMapClient( sqlMapClient );
          }
      
          private Class entityClass ;
      
          private String ibatisNamespace;
      
          protected BaseDao() {
              Type genType = getClass().getGenericSuperclass();
              Type[] params = ((ParameterizedType)genType).getActualTypeArguments();
              entityClass = (Class)params[0];
      
              /**
               * 獲取當(dāng)前 ibatis的命名空間 XxxDao 即命名空間為 xxx
               */
              this.ibatisNamespace = getIbatisNamespace( getClass() );
      
              System.out.println( "初始化當(dāng)前環(huán)境成功,ibatisNamespace=["+this.ibatisNamespace+"],entityClass=[" + entityClass + "]" );
      
          }
      
          public PRIMARYKEY insert( ENTITY entity ) {
              return(PRIMARYKEY)super.getSqlMapClientTemplate().insert( this.ibatisNamespace + ".insert", entity );
          }
      
          public int update( ENTITY entity ) {
              return super.getSqlMapClientTemplate().update( this.ibatisNamespace + ".update", entity );
          }
      
          public ENTITY queryById( PRIMARYKEY primarykey ) {
              return ( ENTITY ) super.getSqlMapClientTemplate().queryForObject( this.ibatisNamespace + ".queryById", primarykey);
          }
      
          public int delete( ENTITY entity ) {
              return super.getSqlMapClientTemplate().delete( this.ibatisNamespace + ".delete", entity);
          }
      
      
          ///##############################
          private String getIbatisNamespace( Class clazz ) {
              String simpleName = clazz.getSimpleName();
              int index = StringUtils.indexOf( simpleName, "Dao" );
      
              return StringUtils.lowerCase( StringUtils.substring( simpleName, 0, index ) );
          }
      
      }
    3. @Transactional在何處使用?Spring建議我們在業(yè)務(wù)實現(xiàn)類上使用該注解,因為java的實現(xiàn)不能繼承注解。所以,最好是在業(yè)務(wù)實現(xiàn)類上注解,這樣不管中的proxy-target-class為true或者false,業(yè)務(wù)類都會啟用事務(wù)機制。

    4. @Transactional的參數(shù)怎么使用?Spring中@Transactional如何配置


關(guān)于“Spring中@Transactional如何配置”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


新聞標(biāo)題:Spring中@Transactional如何配置
本文網(wǎng)址:http://weahome.cn/article/iiicsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部