2010. 9. 8. 18:58
트랜잭션 속성 분석하기

 

트랜잭션은 잘 알려진 ACID 속성, 즉 원자성, 일관성, 격리성, 지속성을 가지며 트랜잭션 리소스들은 트랜잭션의 이러한 특징을 관리해야만 한다. 트랜잭션의 원자성, 일관성, 또는 지속성을 제어할 수는 없지만 시간제한을 제어하고 트랜잭션이 읽기만 가능한지를 설정하고 격리 수준을 명시할 수 있다.

 

스프링은 이러한 모든 설정 관련 사항을 TransactionDefinition 인터페이스로 캡슐화한다. 이 인터페이스는 스프링에서 트랜잭션을 지원하는 핵심 인터페이스인 PlatformTransactionManager에서 사용되며, PlatformTransactionManager를 구현하는 구현체는 JDBC나 JTA와 같은 특정한 플랫폼에 대한 트랜잭션 관리를 수행한다. PlatformTransactionManager.getTransaction()은 TransactionStatus에 대한 레퍼런스를 반환한다. 이 레퍼런스를 이용해서 트랜잭션의 결과를 설정하고 트랜잭션이 읽기전용인지 또는 새로운 트랜잭션으로 실행되어야 하는지를 설정할 수 있게 된다.

 

트랜잭션 격리 수준

 

격리수준 설명
 TransactionDefinition.ISOLATION_DEFAULT  PlatformTransactionManager의 기본 격리수준으로 대부분의 데이터베이스에 ISOLATION_READ_COMMITTED가 적용된다.
 TransactionDefinition.ISOLATION_READ_UNCOMMITTED  가장 낮은 수준의 격리수준이다. 즉, 이 트랜잭션이 수정한 데이터는 심지어 커밋하기도 전에 다른 트랜잭션이 볼 수 있기 때문에 실제로 이것을 격리수준이라고 부를 수는 없다. 또한 이 트랜잭션은 다른 트랜잭션이 커밋을 하기 전에 변경내용을 볼 수 있다.
 TransactionDefinition.ISOLATION_READ_COMMITTED  대부분의 데이터베이스에서 지원하는 기본 격리수준으로 트랜잭션이 완료하기 전에는 데이터에 대한 수정사항을 다른 트랜잭션들이 볼 수 없도록 명시한다. 하지만 다른 트랜잭션이 커밋한 입력/수정 데이터를 조회할 수 있다. 이것은 다른 트랜잭션이 수정한 데이터를 볼 수 있기 때문에 트랜잭션의 시점에 따라 다른 데이터를 볼 수 있다는 것을 의미한다.
 TransactionDefinition.ISOLATION_REPEATABLE_READ  ISOLATION_REPEATABLE_READ
 TransactionDefinition.ISOLATION_SERALIZABLE  

이 글은 스프링노트에서 작성되었습니다.

'Spring > Spring Core' 카테고리의 다른 글

iBATIS addBatch 처리  (0) 2010.09.08
2010. 9. 8. 18:58
  1. public class SqlMapAccountDao extends SqlMapClientDaoSupport implements AccountDao {

        public void insertAccount(Account account) throws DataAccessException {
            getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
                public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
                    executor.startBatch();
                    executor.update("insertAccount", account);
                    executor.update("insertAddress", account.getAddress());
                    executor.executeBatch();
                }
            });
        }
    }

이 글은 스프링노트에서 작성되었습니다.

'Spring > Spring Core' 카테고리의 다른 글

트랜잭션 관리  (0) 2010.09.08