개발새발

[egovFrameWork] mybatis & ibatis 본문

Framework/egovframework

[egovFrameWork] mybatis & ibatis

재래김유진 2020. 1. 20. 13:21
728x90
반응형

egov를 이용해서 게시판 템플릿 프로젝트를 만들었다.

게시판템플릿은 mybatis ibatis 모두 사용할수 있게 만들어져있지만 

기본적으로 ibatis를 이용해서 게시판이 만들어져있고 나는 mybatis를 사용하려고 했다. 

 

1. MyBatis?

- 기존 JDBC코드는 Connection과 Statement를 통해 쿼리를 전송하면 연결받고 Close하는 방식을 사용한다.

   -> 이를 프레임워크화 하여 캡슐화 한것이 mybatis.

- JDBC 코드를 간편하게 사용할 수 있고 SQL문장과 프로그래밍 코드가 분리되어 있어 사용하는데 편리.

- 라이브러리를 통해 매개변수를 전달하고 결과를 추출하는 일을 간단히 처리가능.

 

2. iBatis -> MyBatis 이름 변경? 

- Apache Project 팀이 iBatis를 ~2.3까지 개발 했음.

  이후 해당 팀이 google code 팀으로 이동하면서, 이름을 MyBatis로 변경해 2.5부터 개발 진행중.

 

3. 차이점

1) Java 요구사항 차이점

- iBatis : JDK 1.4 이상 가능

- Mybatis : JDK 1.5 이상 가능

 

2) 패키지 내부 구조 변경

- iBatis : com.ibatis.*

- Mybatis : org.apache.ibatis.*

 

3) sqlMap.xml 내부구조 변경

- iBatis : parameterMap

- MyBatis : parameterType (dtd 변경 - http://mybatis.org/dtd/mybatis-3-mapper.dtd) 

* dtd = Document Type Definition

이거네,,

4) pom.xml 설정

1
2
3
4
5
<dependency>
    <groupId>org.apache.ibatis</groupId>
    <artifactId>ibatis-sqlmap</artifactId>
    <version>2.3.4.726</version>
</dependency>
 
-> ibatis
1
2
3
4
5
6
7
8
9
10
11
12
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.3</version>
</dependency>
 
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.3</version>
</dependency>
 
 
-> mybatis

(근데 egov에서는 pom.xml에 표준프레임워크 실행환경으로 추가되어 있는 dependency에서

i,mybatis를 알아서 처리해주는 듯허다,, )

-> 왜냐하면,, pom.xml에 i,mybatis 관련 dependency가 없기 때문,, 

 

5) 네임스페이스 방식 변경

- iBatis : <sqlMap namespace="Sample">

- MyBatis : <mapper namespace = "myBatis.mapper.UserMapper">egovframework.example.sample.service.impl.SampleMapper">

- 네임스페이스 사용은 필수, userStatementNameSpace 설정 제거 <- 이 설정은 어디서 제거 하는데? 뭔말이햐,,? 이건 모르게따,, 

 

ex)

 

요기까지 reference 

https://themach.tistory.com

 

 

[egov ibatis를 mybatis로 변경]

 

믄저,,

mappers 폴더 밑에 있는 EgovSample_Sample_SQL.xml은 mybatis 문법으로 된 xml이고 

sample 폴더 밑에 있는 EgovSample_Sample_SQL.xml은 ibatis 문법으로 된 xml이다. 

 

그런데 yo 프로젝트에서 ibatis sql을 계속 읽는다면 mybatis 문법으로 된 sql을 읽어달라고 변경해야겠지,, 

그 변경은,, 두둥..탁! 

 

src/main/resoures -> sqlmap -> exmple 폴더 밑에 있는 sql-map-config.xml 에서 바꿔준다. 

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
 
<sqlMapConfig>
    <sqlMap resource="egovframework/sqlmap/example/mappers/EgovSample_Sample_SQL.xml"/>
    <!-- <sqlMap resource="egovframework/sqlmap/example/sample/EgovSample_Sample_SQL.xml"/> -->
</sqlMapConfig>
 
 

주석처리 되어 있는게 원래 있었던 "ibatis sql로 읽어주셈!!" 이다.

근데 주석 풀려있는게 mapper 밑에 mybatis sql로 읽어주세요!! 

 


그 다음,, 

 

EgovSampleServiceImpl.java

 

ibatis를 쓸땐 sampleDAO를 이용하도록,,

mybatis를 쓸 땐 sampleMapper를 이용하도록,, 구조가 되어있다. 

 

그렇기때문에 기존에 지금 주석처리 되어 있는 곳이 활성화 되어 있었는데

난 mybatis를 사용할 것이기 때문에 sampleMapper를 사용하도록 주석처리를 바꿔주고 

변수명을 일일이 다 바꿔주지 않게 sampleDAO로 만들어(져있었따,,)

 

- 끗 -

728x90
반응형
Comments