공부/Spring
[서적 핵심 정리 - 토비의 스프링 3] Ch5. 서비스 추상화
피의화요일
2013. 4. 28. 04:18
Enum
- 자바 5 이상에서 제공
- 숫자 형식으로 정의된 상수를 정의하는 것보다 Enum으로 필요한 값을 정의하는 것이 예외 상황을 피하기 좋음
트랜잭션 (Transaction)
- 데이터베이스에서 최소 작업 단위 (더 이상 나눌수 없음)
- 데이터베이스 트랜잭션의 ACID 특성
- 원자성(Atomicity)
- 트랜잭션은 더 이상 나눌수 없는 작업 단위
- 트랜잭션은 모두 실행되거나, 모두 실패해야 함
- 일관성 (Consistency)
- 트랜잭션은 데이터 무결성 조건을 만족해야 함
- 트랜잭션이 성공하면, 데이터베이스는 언제나 일관성 있는 상태로 유지되어야 함
- 고립성 (Isolation)
- 트랜잭션은 다른 트랜잭션과 독립적으로 수행되어야 함 (서로 영향을 주어서는 안됨)
- 지속성 (Durability)
- 성공적으로 수행된 트랜잭션에 대해 그 결과가 물리적으로 반영되어야 함
- 대부분의 데이터베이스는 트랜잭션을 지원하며, 실패한 트랜잭션을 Rollback 하거나 성공한 트랜잭션을 Commit하는 명령을 지원
JTA (Java Transaction API)
- 다수의 DB 또는 트랜잭션을 지원하는 서비스에 대한 통합 트랜잭션 관리 API
- XA 프로토콜을 통해 다른 서비스를 제어하고 관리
단일 책임의 원칙 (SRP, Single Responsibility Principle)
- 하나의 클래스는 하나의 책임을 가져야 함
- 즉, 하나의 클래스를 변경하기 위한 이유는 하나여야 함
테스트 대역 (Test Double)
- 테스트를 간편히 수행하기 위해 실제 오브젝트의 기능에만 맞춰 만들어진, 테스트에서 사용할 목적으로 만든 객체를 의미
- 테스트 스텁 (Test Stub)
- 테스트 동안에 코드가 정상적으로 수행될 수 있도록 돕는 클래스
- e.g. DummyMailSender
- 목 오브젝트 (Mock Object)
- 테스트동안 테스트 대상 오브젝트와 상호작용하는 오브젝트를 테스트하기위한 테스트 대역