1. 스프링프레임워크 & 마이바티스
(Spring Framework, MyBatis)
1. 스프링 프레임워크 개요
1-1. 도입 배경
1-1-1. 자바 빈(Java Bean)
[1995년]JAVA 탄생, 애플릿의 강력함에 매력
[1996년12월]Sun MicroSystems에서 자바빈 1.0 명세 발표, (자바를 위한 소프트웨어 콤포넌
트 모델을 정의) 자바빈즈는 너무 단순했고 개발자는 엔터프라이즈 개발자들은 좀 더 나은
것을 원함. 정교한 애플리케이션은 트랜잭션지원, 보안, 분산컴퓨팅 같은 서비스가 필요한데
반해 자바 빈즈는 너무 단순함
[1998년 3월]EJB 1.0 발표. EJB는 엔터프라이즈 급의 서비스를 제공하고 자바 콤포넌트의 사
상을 서버측으로 확장 했지만 원래의 자바빈즈가 가지고 있던 단순한은 읽어버림. 성공한 많
은 애플리케이션이 EJB를 기반으로 구축되었음에도 EJB는 본래 의도와 달리 엔터프라이즈 애
플리케이션 개발을 단순화 하지는 못함. 모든 버젂의 EJB 명세에는 “EJB는 엔터프라이즈 애플
리케이션의 작성을 쉽게해 준다” 라고 되어 있다. EJB의 선언적 프로그래밍 모델이 트랜잭션,
보안과 같은 개발의 기반구조의 여러 측면을 단순화 했지만 배치설명자(Deployment
Descriptor), 홈인터페이스, 원격인터페이스등과 같은 과도한 코드를 기술하도록 함으로써 복
잡성을 가중시켰고 시갂이 지날수록 개발자들은 홖멸을 느꼈으며 결국 EJB 명성은 쇠퇴하기
시작했다.
개발자들이 기대했던 것 만큼 실행속도와 개발 생산성을 보장하지 못했다.
IoC와 AOP를 포함한 새로운 프로그래밍 기법때문에 EJB의 강력함을 가질수 있었으며 EJB의
복잡성을 제거하고 EJB의 선언적 프로그래밍 모델이라는 부분을 자바빈즈에게 안겨 준 것이
스프링 프레임워크 이다.
1-1-2. 모델1 개발 방법(Model 1)
프리젞테이션 로직과 비지니스 로직의 혼재로 JSP 복잡성증가
비지니스 로직과 화면로직은 분리되어야 하지만 혼재되어 있음.
2. JSP의 목적은 VIEW에 있는데 너무 많은 일을 하고 유지보수의 어려움이 있다.
Model 2의 도입
1-1-3. 모델2 개발 방법(Model 2, MVC)
JSP가 View, Servlet이 Controller, Java Bean이 Model 역할을 해서 프리젞테이션과 비즈니스
로직을 명확하게 구분하는 Model2 방식을 MVC 모델이라고 한다.
모델(Model) : 데이터 생산, DB삽입/삭제/저장/ 등의 비즈니스 로직 수행, DAO(Data Access
Object), DTO(Data Transfer Object)
뷰(View) : 클라이언트에게 보여줄 프리젞테이션에 집중하는 역할
컨트롤러(Controller) : 클라이언트의 요청을 처리하기 위해 제어 흐름을 당담, 주로 Servlet
모든 클라이언트의 요청은 서블릿 컨트롤러가 받고 사용자의 요청에 따라 처리 객체(Action
개체) 선택하고 각 Action 개체는 Model(DAO)를 이용해서 비즈니스 로직 실행한다.
비즈니스 로직 수행 결과를 Action, Controller로 리턴한다.
3. JSP를 뷰로 해서 forward 시킨다. JSP에서 프레젞테이션(표현영역, 사용자에게 보여지는 부분)
을 생성한다.
컨트롤러 설계할 때 많은 주의가 필요하며 이에따라 프레임워크의 필요성이 증대되어 MVC
골격을 프레임워크화한 스트럿츠 프레임워크(Struts Framework)가 탄생된다.
1-1-4. 스프링 프레임워크 소개(Spring Framework Overview)
프레임워크를 이용하면 프로그램의 작성 분량을 줄일 수 있으며 프로그램의 작성방법에 대한
관습을 강제로 제어할 수 있다.
가이드와 표준에 의한 개발을 따르도록 제어하며 읽기 쉬운 프로그램 작성이 가능하다.
2004년 Rod Johnson이 만든 오픈소스 프레임워크이며 경량의 제어 역행과 관점지향 컨테이
너 프레임워크이다. IoC 컨테이너를 사용하여 의존관계를 자동 주입할 수 있으며 AOP를 이용
하여 공통 기능을 소스코드 변경없이 필요한 곳에 주입시킬 수 있다.
복잡한 엔터프라이즈 애플리케이션 개발을 겨냥하여 자바빈즈를 사용하지만 기존 EJB에서 가
능했던 일들이 가능하다. 선언적 트랜잭션 관리나 웹서비스나 RMI등에 원격접근 가능하며 데
이터 영속성 관리를 위한 다양한 옵션을 제공한다.
단순성,테스트 용이성, 느슨한 결합성의 측면에서 스프링의 이점을 얻을 수 있으며 MVC
Framework의 모든 부분에 대해 지원하고 있다.
최근에는 스프링 부트(Spring Boot)를 제공하여 복잡한 스프링 프로젝트의 구성을 갂편화 하
도록 지원하고 있다.