spring mySql MyBatis 연동 라이브러리
출처 : 코드로 배우는 스프링 웹 프로젝트
저자 : 구멍가게 코딩단
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 객체의 생성
- 컨트롤러 내에 원하는 결과를 메소드로 설계
- 뷰에서 전달받은 데이터의 출력
출처 : 코드로 배우는 스프링 웹 프로젝트
저자 : 구멍가게 코딩단