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 기법을 활용하여 쉽게 쿼리를 작성
-
환경설정(url, user, password) : xml
-
쿼리문 : xml
-
iBatis or myBatis 객체를 생성 : Object
-
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);
'Knowledge' 카테고리의 다른 글
[Knowledge] Thread와 Process 차이점 (0) | 2021.01.04 |
---|---|
[Knowledge] AOP(Aspect Oriented Programming) 관점지향프로그램 란? (0) | 2020.12.30 |
[Knowledge] iBatis & myBatis 사용 개념-1 (0) | 2020.12.30 |
[Knowledge] Eclipse Lombok(롬복) 사용하기 (0) | 2020.12.30 |
[Knowledge] Java - Eclipse 개발환경 세팅 기본-1 (0) | 2020.12.30 |