거래 1.mybatis 관리
SqlSessionFactory는이 SQLSESSION를 연 후, 시사 SQLSESSION 공장 TransactionFactory를 주입합니다 :
개인 SQLSESSION openSessionFromDataSource (는 ExecutorType execType, TransactionIsolationLevel 레벨 부울 자동 커밋) { 트랜잭션 TX = NULL ;
시도 { 최종 환경 환경 = configuration.getEnvironment (); 최종 TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment (환경); TX = transactionFactory.newTransaction (environment.getDataSource () 층, 자동 커밋); 최종 실행기 실행기 = configuration.newExecutor (TX, execType); 반환 새로운 DefaultSqlSession (구성, 집행, 자동 커밋을); }캐치 (예외 전자) { closeTransaction (TX); // 가져온 연결이있을 수 있습니다 것은 그래서 통화 가까운 () 할 수 있습니다 던져 ExceptionFactory.wrapException ( ". 오류 개회식 원인 :"+ 전자, 전자); } 마지막 { 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 스프링 컨테이너 관리 프록시 객체