Knowledge

[Knowledge] iBatis & myBatis 사용 개념-2

Jeong Jeon
반응형

Mybatis

JDBC 6단계는 코드가 반복되고, 재사용성이 떨어지며, 가독성이 좋지않아서 Mybatis를 사용

 

Persistance Layer (Database Layer와 Business Layer사이에서 DB를 실행하고 값을 전달하는 부분

 

  • SqlDaoSupport.java  : SQLMapClient객체

    • SqlMapConfig.xml : mybatis 환경설정값

    • SqlMap.xml : 쿼리문만 갖고있음

  • Mybatis가 2.x이면 ibatis문법을 사용해야 한다.

  • Mybatis가 3.x이면 Mybatis문법을 사용해야 한다.

 

JDBC에서 PrepareStatement를 사용한 Persistance Layer

Presentation Layer(PL)

 

 

Application

Business Layer(BL)

Database Layer(DL)

MVC1 Pattern

  • spagetti source

  • JSP로 구현한 기존 웹 어플리케이션은 모델 1 구조로 웹 브라우저의 요청을 JSP 페이지가 받아서 처리 하는 구조이다.

  • JSP 페이지에 비지니스 로직을 처리 하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관리 코드가 뒤섞여 있는 구조

  • JSP 페이지 안에서 모든 정보를 표현(view)하고 저장(model)하고 처리(control)되므로 재사용이 힘들고, 읽기도 힘들어 가독성이 떨어진다.

    • - 정의: 모든 클라이언트 요청과 응답을 JSP가 담당하는 구조

    • - 장점: 단순한 페이지 작성으로 쉽개 구현 가능하다. 중소형 프로젝트에 적합

    • - 단점: 웹 애플리케이션이 복잡해지면 유지보수 문제가 발생된다.

 

MVC2 Pattern

  • seperate

  • -MVC1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받게 됨

  • 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 그 결과를 JSP 페이지로 포워딩

    • - 정의: 클라이언트의 요청처리와 응답처리, 비지니스 로직 처리하는 부분을 모듈화시킨 구조

    • - 장점: 처리작업의 분리로 인해 유지보수와 확장이 용이하다.

    • - 단점: 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가한다

 

DDD : 도메인 주도형 개발 꼭 찾아보기!!!

  • PL

  • BL

  • DL

DDD 개발형태를 하기위해 MyBatis를 사용한다.

 

ibatis & myBatis 장점

  • 실행하는 환경(드라이버, 커넥션연결, 닫기, 트렌젝션) 을 쉽게 설정

  • 환경, 쿼리문, 실행 객체를 분리해서 개발이 가능

  • 결과값의 객체 Mapping이 편함

  • 쿼리의 반복을 줄이고, binding 기법을 활용하여 쉽게 쿼리를 작성

  1. 환경설정(url, user, password) : xml

  2. 쿼리문 : xml

  3. iBatis or myBatis 객체를 생성 : Object

  4. Object를 사용하여 실행, 결과를 받음

parameter

result

참조타입(Wrapper Class)

참조타입(Wrapper Class)

JCF Map

JCF Map

POJO(Plain Old Java Object)

DTO(UserDefine Class)

POJO(Plain Old Java Object)

DTO(UserDefine Class)

*POJO : Life -Cycle을 따라가지 않는 객체

 

iBatis와 myBatis의 차이점

 

iBatis

myBatis

Version

~ 2.x  Version

3.x ~ Version

사용객체

SqlMapClient

SqlSessionFactory

namespace

옵션으로 사용했음

필수사항

log

FATAL,WARNING,ERROR,DEBUG,INFO,TRACE

TRACE레벨을 사용하지 않으면 Log 출력 안됌

log4j.jar 버전 1.2.17이상 사용해야됨

Mapping선언

ParameterClass, ResultClass, ParameterMap, ResultMap

ParameterType, ResultType

Alias선언

com.min.edu.LoginDto -> LDto

Statement.xml(쿼리)에 각각 선언

Configure.xml에 선언하여 Statement.xml에서 공통으로 사용할수 있음

예제) 쿼리문

CREATE TABLE JOINUSER(

SEQ NUMBER,

ID VARCHAR2(20),

NAME VARCHAR2(50),

ADDRESS VARCHAR2(100),

JOIN_DATE DATE

);

 

CREATE SEQUENCE JOINUSER_SEQ START WITH 1 INCREMENT BY 1;

ALTER TABLE JOINUSER ADD CONSTRAINT JOINUSER_PK PRIMARY KEY(SEQ);

반응형