공부/Spring

[Spring] CHAPTER 05 비즈니스 로직 층의 설계와 구현

JangGiraffe 2016. 3. 23. 11:59

비즈니스 로직 층 : 업무처리를 하는 곳. 비즈니스 로직과 밀접한 관계가 있는 트랜잭션 처리는 비즈니스 로직 층에서 잘 대응해야 한다.


5.1 웹 어플리케이션의 트랜잭션

1) 롱 트랜잭션(약한 결합 트랜잭션) : 여러 요청에 걸친 트랜잭션으로
    ex) 영화예매 (영화관 검색, 자리선택및 요금결제 - 은행에서 돈 인출 )

2) 쇼트 트랜잭션(밀결합 트랜잭션): 하나의 요청 안에서 트랜잭션 처리를 하는 것
    ex) 주문확정(발주 테이블 갱신, 고객 테이블 갱신, 재고 테이블 갱신)


5.1.3 AOP를 이용한 트랜잭션 처리

만약 JDBC를 이용한다면 커넥션을 서비스와 DAO에서 공유해야 하므로 인수를 넘겨줘야 하는 등의 대응이 필요하지만 AOP를 사용하면 그럴 필요가 없다.

스프링이 제공하는 트랜잭션 매니저와 트랜잭션 어드바이스를 이용하면 서비스 내부를 수정하지 않고 트랜잭션 처리를 구현할 수 있다. (선언적 트랜잭션)


5.2 트랜잭션 매니저

스프링이 제공하는 트랜잭션 처리를 위한 부품임. 데이터 액세스 기술을 은폐해 주므로 데이터 액세스 기술이 바뀌어도 같은 방법으로 트랜잭션 매니저를 이용 할 수 있다.

전파속성 : 트랜잭션의 전파방법을 설정해주는 속성

독립성수준 : 트랜잭션 처리가 병행해서 실행될때 트랜잭션의 독립성을 결정하는 것이다.


독립성 수준 

의미 

ISOLATION_READ_COMMITTED 

다른 트랜잭션이 변경했지만 아직 커밋하지 않은 데이터는 읽어 낼 수 없다. 

ISOLATION_READ_UNCOMMITTED

 다른 트랜잭션이 변경하고 아직 커밋하지 않은 데이터를 읽어낼 수 있다.

 ISOLATION_REPEATABLE_READ

 트랜잭션 내에서 여러 번 데이터를 읽어올 때, 다른 트랜잭션이 도중에 데이터를 갱신해도 같은 값을 읽어온다.

 ISOLATION_SERIALIZABLE

트랜잭션을 하나씩 순서대로 처리해 독립시킨다. 

 ISOLATION_DEFAULT

데이터베이스가 제공하는 기본 독립성 수준을 이용한다. 


시간만료 : 트랜잭션이 취소되는 시간

읽기전용상태, 롤백대상예외, 커밋대상예외 등을 설정할 수 있다.



반응형