스프링 프레임워크(27) 사용자 관리 프로젝트 아키텍처

넙데데맨·2022년 6월 20일
0
post-custom-banner

사용자 관리 프로젝트 아키텍처

  • 스프링에서 편리한 개발을 위해 계층화
  • 세가지 계층들은 독립적으로 분리할 수 있도록 구현
  • 일반적으로 각 계층 사이에는 인터페이스를 이용하여 통신

프레젠테이션 계층

  • 브라우저상 웹 클라이언트의 요청 및 응답 처리
  • 상위 계층(서비스, 데이터 액세스)에서 발생하는 Exception 처리
  • 최종 UI에서 표현할 도메인 모델 사용
  • 최종 UI에서 입력한 데이터에 대한 유효성 검증 기능 제공
  • 비즈니스 로직과 최종 UI를 분리하기 위한 컨트롤러 기능 제공
  • @Controller 사용해 작성된 Controller 클래스가 이 계층에 속한다.
  • JSP, html

서비스 계층

  • 비즈니스 로직처리 및 관련 도메인 모델 적합성 검증
  • 트랜잭션 처리
  • 프레젠테이션 계층 - 데이터 액세스 계층 사이 연결 역할으로 직접 통신하지 않게 한다.
  • 다른 계층과 통신하기 위한 인터페이스 제공
  • @Service와 Service 인터페이스 사용해 작성한 Service 구현 클래스가 이 계층에 속함

데이터 액세스 계층

  • 데이터 액세스 로직 객체화
  • 영구 저장소의 데이터 CRUD
  • ORM 프레임워크(MyBatis,Hibernate) 주로 사용
  • DAO 인터페이스와 @Repository 사용해 작성된 DAO 구현 클래스가 이 계층에 속함
  • Spring JDBC

도메인 모델 클래스

  • RDBMS의 엔티티와 비슷한 개념 실제 VO, DTO 객체
  • 3개의 계층 전체에 결쳐서 사용한다.
  • 멤버변수는 private로 선언하고, getter setter 메소드를 호출해 접근하는 클래스

클래스 역할

프레젠테이션 계층

UserController 클래스

  • UI 계층, 서비스 계층 연결 역할 클래스
  • JSP에서 UserController 통해 서비스 계층의 UserService를 사용하게 된다.
  • 서비스 계층의 UserService 인터페이스를 구현하나 객체를 IoC 컨테이너가 주입해줌(@Autowired)

서비스 계층

UserService 인터페이스

  • 서비스 계층에 속한 상위 인터페이스

UserServiceImpl 클래스

  • UserService Interface 구현한 클래스
  • 복잡한 비즈니스 로직 구현
  • 데이터 액세스 계층의 UserDao 인터페이스를 구현한 객체를 IoC 컨테이너가 주입해줌(@Autowired)

데이터 액세스 계층

UserDao 인터페이스

  • 데이터 액세스 계층에 속한 상위 인터페이스

UserDaoImplJDBC

  • UserDao 인터페이스 구현 클래스
  • 데이터 액세스 로직 구현
  • SpringJDBC 사용시 DataSource를 IoC 컨테이너가 주입
  • MyBatis 사용 시 SqlSession IoC 컨테이너가 주입
profile
차근차근
post-custom-banner

0개의 댓글