Skip to end of metadata
Go to start of metadata



개요


Spring+iBatis 트랜잭션 관리 방법에 대해 설명합니다. 

 

 

방법


1. BMT(Bean Managed Transaction), 명시적 트랜잭션 관리(소스에서 트랜잭션 처리를 고려하는 방법)


   1-1. DataSourceTransactionManager 를 직접사용하는 경우
   1-2. TransactionTemplate 를 사용하는 경우


2. CMT(Container Managed Transaction), 선언적 트랜잭션 관리(설정화일을 이용하고, 소스에서는 트랜잭션 처리를 위한 고려를 줄이는 방법)


   2-1. <tx:advice> 태그를 이용한 방법
   2-2. TransactionProxyFactoryBean 태그를 이용한 방법
   2-3 @Transactional 어노테이션을 이용한 방법

 

 

상세 설명


공통 적용사항


applicationContext.xml

  


1-1. DataSourceTransactionManager 를 직접사용하는 경우


 

  • 설정 파일 : 추가적으로 설정할 것이 없습니다. 
  • 소스 상에서 직접 commit, rollback 처리를 해아합니다. 
    트랜잭션으로 처리를 해주기 위해서는 setAutoCommit(false)를 호출해야 합니다. 
    주의할점은, blob select시에는 필히 setAutoCommit(false)를 호출해 주어야 한다는 것입니다.


1-2. TransactionTemplate 를 사용하는 경우


  • 설정 파일

  • 소스 상에서 transactionTemplate.execute(), doInTransaction() 등의 함수를 이용하여야 합니다.
  • 주의할 점은 blob select시에 기존 오라클에서는 트랜잭션 처리를 해주지 않았겠지만 알티베이스로 사용시에는 꼭, 소스상에서 transactionTemplate.execute(), doInTransaction() 등의  함수를 이용하여 트랜잭션 처리를 해주어야 한다는 점입니다.

 

2-1. <tx:advice> 태그를 이용한 방법


  • 설정 파일

  • 소스 상에는 트랜잭션 관련 코드 필요 없습니다.

 


2-2. TransactionProxyFactoryBean 태그를 이용한 방법


  • 설정 파일

  • 소스 상에는 트랜잭션 관련 코드 필요 없습니다.


 

2-3 @Transactional 어노테이션을 이용한 방법


  • 설정 파일

  • 소스 상에서 트랜잭션이 필요한 클래스는 @Transactional(propagation=Propagation.REQUIRED)  표기가 필요합니다. 

 

 

 

 

참고


  • 표준프레임워크에서 안내하는 AltibaseClobStringTypeHandler 를 적용하면 CLOB 이 0 byte 인 경우에 오류가 발생할 수 있습니다.
    이 경우는 TypeHandler 를 사용하지 않고 어노테이션 추가하여 정상적으로 조회 되는 것을 확인할 수 있습니다. 



샘플 코드


LOB 데이터 처리하는 샘플 코드입니다. 


 

  • No labels