전자정부프레임워크 iBatis, MyBatis 설정 방식 차이

전자정부프레임워크 iBatis, MyBatis 설정 방식 차이

전자정부프레임워크 iBatis, MyBatis 설정 방식 차이

MyBatis 의 구버젼인 iBatis 와의 설정 방식 차이에 대해서 알아보겠습니다.

(같은 DAO 형태로 사용하는 경우를 예로 설명하겠습니다.)

전자정부프레임워크에서는 MyBatis와 iBatis 설정이 모두 되어 있습니다.

그러므로 그냥 쓰고싶은 설정을 해서 사용하면 되는 것이죠.

그럼 차근차근 순서대로 각각의 설정에 대해 알아보도록 하겠습니다.

전자정부프레임워크를 활용하지 않을 경우에는 pom.xml 에 각각의 설정을 해줘야 합니다.

예시)

org.mybatis

mybatis

3.2.2

org.apache.ibatis

ibatis-sqlmap

2.3.4.726

하지만 위에서 말씀드린데로 전자정부프레임워크에는 설정이 모두 있으니 추가 할 필요는 없습니다.

그럼 다음으로 spring 설정 파일 쪽을 확인해보도록 하죠.

프로젝트의 web.xml을 보시게 되면 spring에서 필요한 설정파일 위치를 등록한 곳이 있습니다.

contextConfigLocation

classpath*:egovframework/spring/context-*.xml

위의 설정된 폴더로 이동해 보도록 하죠.

여러 파일들이 있습니다.

context-aspect.xml

context-common.xml

context-datasource.xml

context-idgen.xml

context-mapper.xml

context-sqlMap.xml

context-properties.xml

context-transaction.xml

context-validator.xml

이 파일들에 대한 설명은 아래의 Link를 확인하세요.

Link : 전자정부프레임워크 설정파일

이중에서 iBatis 설정에 필요한 파일은 context-sqlMap.xml

myBatis 설정에 필요한 파일은 context-mapper.xml 입니다.

iBatis 설정파일(context-sqlMap.xml) 부터 보도록 하겠습니다.

전자정부에서 제공하는 ibatis SqlMapClientFactoryBean 클래스를 활용하고 있죠.

iBatis 설정파일과 디비 접속 정보를 프로퍼티로 전달하고 있습니다.

설정파일 sql-map-config.xml 에

프로젝트에서 사용할 Query xml을 모두 등록 해야 합니다.

ex)

.

.

.

그래야 dao에서 요청에 있을 때 해당 sqlMap 내에서 id를 찾아 디비를 호출 할 수 있죠.

아래는 myBatis의 설정파일입니다.(context-mapper.xml)

iBatis와 다르게 spring에서 제공하는 SqlSessionFactoryBean 클래스를 활용하고 있습니다.

그리고 mapperLocations라는 프로퍼티를 하나 더 사용 하고 있죠.

이 설정을 활용해 iBatis에서 일일히 Query xml을 등록하는 작업을 하지 않아도 됩니다.

저 경로에 있는 xml을 읽어드리기 때문이죠.

그래서 설정파일에서 기본적인 설정만 해주어도 되는것이죠. 따로 설정할 것이 없다면 configLocation을 제거하셔도 됩니다.

그 다음 차이를 보이는 곳은 DAO 인데요.

iBatis에서는 EgovAbstractDAO 를,

myBatis에서는 EgovAbstractMapper 를 extends 해서 사용하게 됩니다.

여기서 차이가 나는 것은 extends된 클래스에서 사용되는 CRUD 메소드 들인데요.

예를들어 iBatis 에서 리스트 형식으로 데이터를 받아올 때 list 메소드를 사용했다면

myBatis에서는 selectList라는 메소드를 사용하게 됩니다.

@SuppressWarnings("unchecked")

public List getTestList(SearchVo param) throws Exception {

return (List) list("test.getTestList", param);

}

public List getTestList(SearchVO param) throws Exception{

return selectList("testDAO.getTestList", param);

}

(myBatis에서는 리턴타입의 형변환을 안해줘도 에러가 나지 않더군요.)

그리고 또 하나의 차이점은 기존에 iBatis에서 사용하던 parameterClass, resultClass 가

parameterType, resultType으로 변경 되었습니다.

이제 설정쪽의 차이는 거의 확인을 한 것 같습니다.

iBatis와 myBatis 는 동적태그 사용할 때도 차이 가 있습니다.

예를 들어 iBatis에서 isEqual, isEmpty 와 같이 사용하던 태그를

myBatis에서는 if 태그 등으로 사용할 수 있게 바뀌었죠.

개발자 입장에서는 보다 편해진것 같습니다.

출처: https://aljjabaegi.tistory.com/309 [알짜배기 프로그래머]

from http://developer-latteya.tistory.com/39 by ccl(A) rewrite - 2020-03-19 10:54:27

댓글

이 블로그의 인기 게시물

[샤니마스 SPRING PARTY2020] THE IDOLM @ STER SHINY COLORS SPRING...

2020 LCK 롤챔스 Spring 경기 재개 및 일정

개발을 시작해봐요! 스프링 부트(Spring Boot ) 게시판 - 게시글 조회...