IT/Java

2021-03-10 일지1

어린이개발자 2021. 3. 10. 10:03

< 레이어드 아키텍처(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