< 레이어드 아키텍처(Layered Architecture) 내용 정리 >
* 서비스(Service) 객체
- 비지니스 로직(Business Logic)을 수행하는 메소드를 가지고 있는 객체
- 보동 하나의 비지니스 로직은 하나의 트랜잭션으로 동작
* 트랜잭션(Transaction)
- 하나의 논리적인 작업
- 트랜잭션의 4가지 특징
> 원자성(Atomicity)
: 전체가 성공하거나 전체가 실패하는 것
> 일관성(Consistency)
> 독립성(Isolation)
> 지속성(Durability)
: 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 함
* JDBC 프로그래밍에서 트랜잭션 처리 방법
- DB에 연결된 후 Connection 객체의 setAutoCommit 메소드에
false를 파라미터로 지정
- 입력, 수정, 삭제 SQL이 실행을 한 후 모두 성공했을 경우
Connection이 가지고 있는 commit() 메소드를 호출
* @EnableTransactionManagement
- Spring Java Config 파일에서 트랜잭션을 활성화할 때 사용하는 어노테이션
- Java Config를 사용하게 되면 PlatformTransactionManager 구현체를
모두 찾아서 그 중에 하나를 매핑해 사용
- 특정 트랜잭션 매니저를 사용하고자 한다면
TransactionManagementConfigurer를 Java Config 파일에서 구현하고
원하는 트랜잭션 매니저를 리턴하도록 함
- 아니면, 특정 트랜잭션 매니저 객체를 생성 시 @Primary 어노테이션을 지정
* 설정의 분리
- Spring 설정 파일을 프리젠테이션 레이어쪽과 나머지를 분리할 수 있음
- web.xml 파일에서 프리젠테이션 레이어에 대한 스프링 설정은 DispatcherServlet이 읽도록 하고,
그 외의 설정은 ContextLoaderListener를 통해서 읽도록 함
- DispatcherServlet은 경우에 따라서 2개 이상 설정할 수 있는데,
이 경우에는 각각의 DispatcherServlet의 ApplicationContext가 각각 독립적이기 때문에
각각의 설정 파일에서 생성한 빈을 서로 사용할 수 없음
- 위의 경우와 같이 동시에 필요한 빈은 ContextLoaderListener를 사용함으로써
공통으로 사용하게 할 수 있음
- ContextLoaderListener와 DispatcherServlet은 각각 ApplicationContext를 생성하는데,
ContextLoaderListener가 생성하는 ApplicationContext가 root컨텍스트가 되고
DispatcherServlet이 생성한 인스턴스는 root컨텍스트를 부모로 하는 자식 컨텍스트가 됨
참고로, 자식 컨텍스트들은 root컨텍스트의 설정 빈을 사용할 수 있음
'IT > Java' 카테고리의 다른 글
2021-03-10 일지3 (0) | 2021.03.10 |
---|---|
2021-03-10 일지2 (0) | 2021.03.10 |
2021-03-09 일지2 (0) | 2021.03.09 |
2021-03-09 일지1 (0) | 2021.03.09 |
2021-03-08 일지1 (0) | 2021.03.08 |