Whiteship's Note

AbstractTransactionalDataSourceSpringContextTests

Spring/주소록 만들기 : 2006. 11. 13. 13:26


아 굉장히 기다란 클래스 이름입니다. 한글로는 "추상 트랜잭셔널 데이타소스 스프링 컨텍스트 테스츠" 클래스. 일종의 농담입니다. -_-;;

AbstractTransactionalDataSourceSpringContextTests 클래스 API를 보았습니다.
분홍색 윗 부분은 JUnit 프레임웍입니다. 이 클래스는 기본적으로 JUnit 프레임웍 기반으로 만들어졌슴을 알 수 있습니다. 그러므로 assertEquals(int a, int b) 와 같은 test에 유용한 JUnit의 메소드들을 사용할 수 있었던 것입니다.

JdbcTemplate 클래스 살펴 보기
그리고 가지고 있는 member 변수로는 jdbcTemplate이 있으며 API를 인용하면 다음과 같습니다.
This is the central class in the JDBC core package. It simplifies the use of JDBC and helps to avoid common errors. It executes core JDBC workflow, leaving application code to provide SQL and extract results. This class executes SQL queries or updates, initiating iteration over ResultSets and catching JDBC exceptions and translating them to the generic, more informative exception hierarchy defined in the  org.springframework.dao.pachage.JDBC 사용을 간편하게 해주는 객체 인듯 합니다.
AbstractTransactionalSpringContextTests 클래스 살펴 보기

멤버와 상속구조를 살펴 봐서는 대체 어떤 녀석인지 아직도 감이 잡히지 않습니다. 이 클래스의 API를 보면  "AbstractTransactionalSpringContextTests를 상속받은 클래스로 몇가지 편리한 기능을 추가를 했다. Expects a DataSource to be defined in the Spring application context.(?) 이 클래스는 JdbcTemplate을 가지고 있으며 트랜잭션을 DB에서 지우는 편리한 방법을 제공한다." 라고 나와있습니다.(가운데 문장은 해석이잘 안됨.ㅠ.ㅠ)

그래서 상위 클래스인 AbstractTransactionalSpringContextTests API를 살펴보았습니다.

트랙잭션이 발생 시키는 테스트를 할 때 유용한 슈퍼 클래스지만 기본적으로 트랜잭션을 각각의 테스트 메소드가 끝날 때 마다 롤백 시킨다.

다음과 같은 상황일 때 유용하다.
  • 다른 test에 영향을 주지않고 DB에 data을 넣거나 삭제 할 때.
  • 트랜잭션이 필요한 코드를 위해 transactional context를 제공
  • 굳이 청소할 필요없이 DB에 아무거나 집어 넣어 볼때.
다음과 같은 유용한 메소드도 제공합니다.
  • setComplete() - 트랜잭션을 롤백 시키고 싶지 않을 때(DB에 추가, 삭제한 결과를 남기고 싶을때 사용)
  • endTransaction() - 트랜잭션을 좀더 빨리 끝내고 싶을 때(잘 모르겠네요. O/R mapping의 초기화 지연 기법을 검증할 때 사용할 수 있다는데 O/R mapping이 뭔지 모르겠네요.)
  • startNewTransaction() - endTransaction() 호출 뒤에 이전 트랜잭션에 독립적인 새로운 트랜잭션을 시작할때 사용(역시.. endTransaction() 커플로 어떻게 언제 쓰는건지 모르겠습니다.)

아직은 뭔가 알아내야 할 것이 많군요. OTL 갈길이 너무 멀다. 멀다 한들 멈추리오..

'Spring > 주소록 만들기' 카테고리의 다른 글

수정해야 할 것들  (2) 2006.11.28
iBATIS에서 selectKey 사용하기  (2) 2006.11.23
MySQL 설치 시 주의 할 점  (6) 2006.11.23
DB 인코딩 문제  (0) 2006.11.20
SqlMapClientDaoSupport  (0) 2006.11.18
AbstractTransactionalDataSourceSpringContextTests  (4) 2006.11.13
회원 목록 추가  (0) 2006.11.13
XML configuration  (0) 2006.11.10
MySQL Connector Down + testAdd()  (0) 2006.11.10
MySQL 설치 + 사용  (1) 2006.11.09
프로젝트 생성 + jar 파일 추가  (0) 2006.11.09
top

  1. Favicon of https://zerry82.tistory.com BlogIcon 동자~ 2006.11.13 16:46 신고 PERM. MOD/DEL REPLY

    이름 진짜 길다 -0- 화이팅!

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.11.13 16:56 신고 PERM MOD/DEL

    화이팅!

  2. 손님 2006.12.11 21:56 PERM. MOD/DEL REPLY

    구글 검색 통해서 들어왔는데요.

    Providing a transactional context for any code requiring a transaction

    이 부분은 아래와 같이 해석 가능하겠습니다.

    "트랜잭션이 필요한 코드를 위해 transactional context를 제공"

    즉 테스트를 할 때 트랜잭션이 필요한 부분에서 Transaction을 제어하기 위해 사용 되는 Transactional Context를 제공한다는 말인 것 같네요.^^

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2006.12.11 22:14 신고 PERM MOD/DEL

    넵 ^^ 감사합니다.

    이 클래스를 사용해서 test클래스를 만들면 트랜잭션들이 롤백되더군요. :)

Write a comment.