業務を管理する方法の春にトランザクションMyBatisの管理と統合された春の後

   取引1.mybatisの管理

    SqlSessionFactoryはSQLSESSIONを開いた後、時事SQLSESSIONファクトリーたTransactionFactoryを注入します。

    

プライベートSQLSESSION openSessionFromDataSource(ExecutorType execType、TransactionIsolationLevelレベル、ブール はautoCommit){  トランザクションTX = NULL ;     

試す
{ 最終的な環境環境= configuration.getEnvironment()。 最終たTransactionFactoryたTransactionFactory = getTransactionFactoryFromEnvironment(環境)。 TX = transactionFactory.newTransaction(environment.getDataSource()、レベル自動コミット)。 最終キュータエグゼキュータ= configuration.newExecutor(TX、execType)。 返す 新しいDefaultSqlSession(コンフィギュレーション、エグゼキュータ、自動コミット)。 }キャッチ(例外e){ closeTransaction(TX)。// フェッチされたAの接続を有することができるので、コール近いが、()することができます スロー ExceptionFactory.wrapException(「エラーオープニングセッション原因:」+ E、E)を、 } 最後に{ ErrorContext.instance()(リセット)。 } } //事务的生产交给   
たTransactionFactory

プライベートたTransactionFactory getTransactionFactoryFromEnvironment(環境環境){ 場合(環境== nullの || environment.getTransactionFactory()== nullが){ 返す 新しいManagedTransactionFactoryを(); } を返す)(environment.getTransactionFactoryします。 }

 

 

生産はで業務をMyBatisのように、生産たTransactionFactory、このクラスはインタフェースであり、具体的な実装は春に真の、統合MyBatisのを実行するための論理的な場所である、SpringManagedTransactionFactory実装インタフェース、それによって、春のトランザクション管理MyBatisのは、管理されます

ロジックの転送を実現するには:

  < ビーンID = "sqlSessionFactory" クラス= "org.mybatis.spring.SqlSessionFactoryBean" > 
        < プロパティ= "データソース" REF = "データソース" /> 
        < プロパティ= "mapperLocations" = "クラスパス*:* XML" /> 
    </ >

春に配置SqlSessionFactoryBean行うafterPropertiesSet方法はSqlSessionFactoryを初期化し、配置したTransactionFactoryをSpringManagedTransactionFactory

 

 < 豆のクラス= "org.mybatis.spring.mapper.MapperScannerConfigurer" > 
        < プロパティ= "basePackage" = "COM。*。**" /> 
        < プロパティ= "sqlSessionFactoryBeanName" = "sqlSessionFactory" /> 
    < / >

MapperScannerConfigurerを行うマッパーインターフェースプロキシを達成するためpostProcessBeanDefinitionRegistryの方法、スプリング及びコンテナ管理へのプロキシオブジェクト

おすすめ

転載: www.cnblogs.com/eason-ou/p/12515921.html