검색결과 리스트
Spring/Spring Core 에 해당되는 글 2건
- 2010.09.08 트랜잭션 관리
- 2010.09.08 iBATIS addBatch 처리
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
- 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 |
---|