스프링

spring mySql MyBatis 연동 라이브러리

subdong7 2018. 9. 1. 13:19

출처 : 코드로 배우는 스프링 웹 프로젝트

저자 : 구멍가게 코딩단

 

spring   ---   MyBatis   ---   MySql

 

 

spring 프레임워크와 MySql 데이터베이스 와의 연동을 위해서는 MyBatis 프레임워크 사용

 

MyBatis 프레임워크 사용을 위해서 필요한 모듈은 pom.xml 에 추가함

 

MyBatis 프레임워크 사용을 위해서 필요한 라이브러리

  - MyBatis           : SQL Mapper 라이브러리.

                           MyBatis 라이브러리 없이 통상적으로 JDBC 작업을 하게 되면 개발자는 많은 코드를 반복하게됨

                           ( try ~ catch finally , PreparedStatement 와 ResultSet 의 데이터 처리)

                           MyBatis 는 이러한 코드를 상당히 많이 줄여 줄 수 있어 개발 속도를 향상하는데 크게 기여

  - MyBatis-Spring : 직접 SQL 문의 호출 없이도 원하는 결과를 얻을 수 있음

  - spring-jdbc      : 스프링이 그 자체로 가지고 있는 JDBC 용 개발 모듈

                           이 자체만 이용해서 개발가능 하지만 MyBatis 만큼 개발의 편리함을 제공하지는 못함

  - spring-test       : 스프링과 MyBatis 가 정상적으로 연동되었는지 확인

                           WAS 의 구동없이 정상적으로 동작하는지를 확인하는 용도

 

 

* 스프링 웹 프로젝트 진행시 스프링 MVC 를 사용해서 진행

 

스프링 MVC 는 모델 2 방식 구조를 이용함

 

모델 2 방식은 화면과 데이터 처리를 분리해서 재사용이 가능하도록 하는 구조

 

모델 : 데이터 혹은 데이터를 처리하는 영역

 

뷰 : 결과 화면을 만들어 내는 데 사용하는 자원을 의미함

 

컨트롤러 : 웹의 요청(request) 을 처리하는 존재로 뷰와 모델 사이의 중간 통신 역할

 

                ┌------------┐-->

request --> |    Controller  |      Model

                └------------┘<--

                          |       

        ↓

      View

 

 

* 모델 2 방식에서의 문제점

  - 각 컨트롤러 사이의 중복적인 코드 문제

  - 개발자의 개발 패턴의 차이 문제

 

* 모델 2 방식은 좀 더 강제적인 형태인 Front Controller 방식을 적용하게 됨

 

request --> Front controller --> Controller

return   <--                     <--

                        ↑ ↓

View template

 

[스프링 공식 문서..]

 

Front Controller 패턴의 가장 중요한 변화는 전체 로직의 일부만을 컨트롤러가 처리하도록 변경되었다는 점

전체 로직의 일부를 컨트롤러에게 위임

모든 흐름의 제어는 앞쪽의 Front Controller 가 담당

 

 

* 책에서 만들어지는 예제의 구조

1. 사용자의 모든 요청을 스프링 MVC 의 Front Controller 에게 전달됨

2. 전달된 요청은 적절한 컨트롤러를 찾아서 호출하게 됨

3. 이 때 사용되는 컨트롤러의 작업이 개발자의 몫으로 남겨진 일임

4. 컨트롤러는 적절한 서비스 객체를 찾아서 호출함

5. 서비스는 데이터베이스의 작업을 담당하는 DAO(Data Access Object) 를 이용해서 원하는 데이터를 요청

6. DAO 객체는 MyBatis 를 이용하는 Mapper 를 통해서 원하는 작업을 수행

7. 서비스가 처리한 데이터를 컨트롤러에게 전달

8. 컨트롤러는 다시 스프링 MVC 쪽으로 데이터를 전달

 

* 스프링 MVC가 처리해 주는 작업

  - URI를 분석해서 적절한 컨트롤러를 찾는 작업

  - 컨트롤러에 필요한 메소드를 호출하는 작업

  - 컨트롤러의 결과 데이터를 뷰로 전달하는 작업

  - 적절한 뷰를 찾는 작업

 

* 개발자가 직접 해야 하는 작업

  - 특정 URI 에 동작하는 컨트롤러를 설계하는 작업

  - 서비스 객체의 생성

  - DAO 객체의 생성

  - 컨트롤러 내에 원하는 결과를 메소드로 설계

  - 뷰에서 전달받은 데이터의 출력

 

 

 

출처 : 코드로 배우는 스프링 웹 프로젝트

저자 : 구멍가게 코딩단