트랜잭션 경계설정
Dao -> DatasourceTransactionManager -> getConnection() -> Connection 결과에 따라서 Commit() or RollBack()
1) DataSourceTransactionManager
library =
'org.springframework', name: 'spring-jdbc'
2) Class Diagram
3) DataSource, Connection
DataSource getConnection을 통해 Connection을 획득한다.
3) 여러개의 DB에 넣는 작업 -> 로컬 Transcation으로는 불가. 글로벌 Transcation 방법 사용
Hibernate를 이용하는 작업 -> 기존의 Connection방법과는 다르다. Session을 이용한 트랜잭션 관리 API를 사용한다.
스프링 트랜잭션 서비스 추상화
PlatFormTransactionManager -> getTranscation()을 통해 반환된 TranscationStatus를 할당
이후 할당된 TranscationStatus의 commit()과 rollback()을 활용
외부 의존성이 포함된 테스트(책의 경우 JavaMail)
Mock Object를 이용한 테스트 -> 실제 Mail Server전송시 사용하는 send() Method는 빈 메소드이고 그 이전만 구현
AOP
관점 분리 -> 가장 인기 있는 적용 대상 : 선언적 트랜잭션 -> 비즈니스 로직안에 수많은 선언적 트랜잭션이 위치 -> 불편...
느낀점
처음 책을 읽을때, 여러 사람들이 너무 오래된 책이라 현재와 많이 다른 부분이 존재한다고 말했었다.
읽으면서 나도 느낀다. JDBC를 너무 많이 설명하는것도 보면 그렇고, 하지만 그런 부분보다는 과거에서 이러하였던 기술이 지금처럼 이러한 기술로 발전하였구나 생각하면서 읽다보니 더욱 더 좋아진다.
TransactionManager를 가지고와서 try{} catch{}를 걸던 구문이 @Transactional annotation만 사용하도록 변경된점 하며...
근데 ? 어차피 @Transaction annotation도 내부적으로는 기술한 방식을 사용하는 기술이다.
내부적으로 어떻게 돌아가는지 어떻게 작동하는지 모르고 사용하는건 좋지 않은 방법이라 생각한다.
그래서 난 옛날책인 토비의 스프링이 더 좋다.
'BOOK > 토비의스프링' 카테고리의 다른 글
[1권] 토비의 스프링 6일차 (0) | 2022.08.31 |
---|---|
[1권] 토비의 스프링 5일차 (0) | 2022.08.29 |
[1권] 토비의 스프링 4일차 (0) | 2022.08.28 |
[1권] 토비의 스프링 2일차 + [2권] 앞부분 (0) | 2022.08.25 |
[1권] 토비의 스프링 1일차 (0) | 2022.08.24 |