웹찢남

Spring - 레이어드 아키텍처 본문

BACK_END/Spring 공부

Spring - 레이어드 아키텍처

harry595 2021. 2. 23. 19:16

웹 페이지 내에는 중복되는 구성요소들이 있음 (로그인 기능, 메인 메뉴 등)

 

*중복되는 부분을 처리하려면?

- 별도의 객체로 분리한다.

- 별도의 메소드로 분리한다.

 

비지니스 메소드를 별도의 Service 객체에서 구현하도록 하고 컨트롤러는 Service 객체를 사용하도록 함

 

서비스 객체란?

- 비지니스 로직을 수행하는 메소드를 가지고 있는 객체

- 하나의 비지니스 로직은 하나의 트랜잭션으로 동작

 

트랜잭션이란?

- 하나의 논리적인 작업을 의미

- 특징 1. 원자성: 전체가 성공하거나 전체가 실패하는 것을 의미

          ex) 결제 후의 과정에서 에러 발생 시 이를 모두 rollback 해야함

- 특징 2. 일관성: 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 함

          ex) 트랜잭션이 진행 중 데이터 변경이 있어도 처음 참조한 데이터로 진행해야함

- 특징 3. 독립성: 어느 하나의 트랜잭션이라도 다른 트랜잭션의 연산을 끼어들 수 없음

          ex) critical section, race condition

- 특징 4. 지속성: 트랜잭션이 성공적으로 완료 시 결과가 영구적으로 반영

 

JDBC 프로그래밍에서 트랜잭션 처리 방법

- DB에 연결된 후 Connection 객체의 setAutoCommit 메소드에 false를 파라미터로 지정

- 일정 트랜잭션 내 모든 SQL이 모두 성공 시 commit() 메소드 호출

 

서비스 객체에서 중복으로 호출되는 코드의 처리

- 데이터 엑세스 메소드를 별도로 Repository(Dao) 객체에서 구현하도록 하고 서비스는 Repository 객체 사용

 

Presentation Layer / Service Layer, Repository Layer(Dao)는 재사용적인 측면, 유지보수 면에서 분리하는 게 좋음

Presentation Layer를 웹, 앱 등으로 바꾸기만하면 생산성이 좋음

-> 설정의 분리가 중요시됨

방법 -> web.xml 파일에서 프리젠테이션 레이어에 대한 스프링 설정은 DispatcherServlet이 읽게하고 그외의 설정은 ContextLoaderListner를 통해 읽도록 한다.

 

 

 

'BACK_END > Spring 공부' 카테고리의 다른 글

Spring - REST API  (0) 2021.02.25
Spring - 방명록 만들기  (0) 2021.02.25
Spring - MVC  (0) 2021.02.17
Spring - JDBC  (0) 2021.02.15
Spring - Spring Core  (0) 2021.02.13
Comments