MyBatis

밍디·2024년 2월 1일

MyBatis

  • 자바 오브젝트와 SQL 사이의 자동 매핑 기능을 지원하는 ORM 프레임워크
  • SQL을 별도의 파일로 분리해서 관리하게 해줌
  • Hibernate나 JAP처럼 새로운 DB프로그래밍 패러다임을 익혀야하는 부담없이 sql을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거해주고, 도메인 객체나 vo객체를 중심으로 개발이 가능하다는 장점이 있음

MyBatis 특징

  • 쉬운 접근성과 코드의 간결함
  • sql문과 프로그래밍 코드의 분리
  • 다양한 프로그래밍 언어로 구현 가능

Maven

  • 자바 프로젝트의 빌드를 자동화해주는 빌드 툴
  • 프로젝트의 전체적인 라이프 사이클을 관리하는 도구이며, 많은 편리함과 이점이 있어 널리 사용
  • 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운 받아줌
  • maven은 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소는 라이브러리를 공유하는 파일서버라고 볼 수 있고, 메이븐은 자기 회사만의 중앙 저장소를 구축할 수도 있음

pom

web.xml : servlet container 초기화

  • contextLoaderListener
    : web.xml에서 모두 load되도록 등록할 때 사용
    서블릿 이전에 스블릿 초기화하는 용도로 쓰이며, contextConfigLocation이라는 파라미터를 쓰면, context loader가 load할 수 있는 설정 파일을 여러개 쓸수 있음(root-context.xml설정)
  • characterEncodingFilter
    : 스프링은 웹 요청과 응답에 대한 인코딩 처리를 위해 제공함
    servlet 표준 스펙인 javax.servlet.filter 인터페이스를 구현한 클래스이기때문에 기존에 jsp에서 사용하던 필터와 똑같이 사용가능함

Dispatcher-servlet

: servlet container 에서 http프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일 앞에 둬서 중앙집중식으로 처리해주는 프론트 컨트롤러
클라이언트로부터 어떠한 요청이 오면 tomcat과 같은 서블릿 컨테이너가 요청을 받는데, 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러를 spring에서 정의하였고, 이를 dispatcher-servlet이라고 함.
그래서 공통처리 작업을 dispatcher-servlet이 처리한 후 적절한 세부 컨트롤러로 작업을 위임함
front controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해주는 컨트롤러인데, mvc구조에서 함께 사용되는 패턴임

MVC

: model, view, controller

  • 역할
    model : 시스템의 비즈니스 로직 담당
    view : 화면의 표시, 입력 등의 처리
    controller : 유저의 입력에 근거하여 model과 view를 제어
  • 처리과정
    model : 실제로 데이터 처리
    view : model의 상태를 표시한다
    controller : model과 view처리를 요청
  • MVC 장점
    : 기능별로 분리되어있기 때문에 분업해서 작업을 진행하기 편리
    분리되어있기때문에 변경, 수정이 필요한 경우 다른 영역까지 영향이 미치지 않음

MVC에서 사용하는 주요 어노테이션

MVC처리 순서

  1. 클라이언트가 서버에 요청을 하면, front controller인 DispatcherServlet 클래스가 요청을
    받는다.
  2. DispatcherServlet는 프로젝트 파일 내의 servlet-context.xml 파일의 @Controller 인자를
    통해 등록한 요청 위임 컨트롤러를 찾아 매핑(mapping)된 컨트롤러가 존재하면
    @RequestMapping을 통해 요청을 처리할 메소드로 이동한다.
  3. 컨트롤러는 해당 요청을 처리할 Service(서비스)를 받아 비즈니스로직을 서비스에게 위임
    한다.
  4. Service(서비스)는 요청에 필요한 작업을 수행하고, 요청에 대해 DB에 접근해야한다면
    DAO에 요청하여 처리를 위임한다.
  5. DAO(UserDao.java)는 DB정보를 DTO(User.java)를 통해 받아 서비스에게 전달한다.
  6. 서비스는 전달받은 데이터를 컨트롤러에게 전달한다.
  7. 컨트롤러는 Model(모델) 객체에게 요청에 맞는 View(뷰) 정보를 담아 DispatcherServlet는
    에게 전송한다.
  8. DispatcherServlet는 ViewResolver에게 전달받은 View정보를 전달한다.
  9. ViewResolver는 응답할 View에 대한 JSP를 찾아 DispatcherServlet에게 전달한다.
  10. DispatcherServlet는 응답할 뷰의 Render를 지시하고 뷰는 로직을 처리한다.
  11. DispatcherServlet는 클라이언트에게 Rendering된 뷰를 응답하며 요청을 마친다.
profile
Developer

0개의 댓글