'마이바티스개요'에 해당되는 글 1건

  1. 2016.12.10 마이바티스 개요 및 특징
2016. 12. 10. 19:10

마이바티스 개요 및 특징에 대해서 알아보겠습니다.

 

1. 마이바티스 특징

 

- JDBC 프레임 워크이다.

  자바의 관계형 데이터베이스 프로그래밍을 좀더 쉽게 할 수 있게 도와주는 개발 프레임워크이다.

 

- JDBC를 사용할 때의 try/catch/finally/ 구문 사용이 불필요하다.

 

- SQL매퍼다.즉 마이바티스는 SQL을 명시해줘야 한다.

  여러줄에 걸친 SQL을 쉽게 작성하기 위해서 자바코드에 정의하지 않고

  XML에 정의해서 보기에도 편하고 수정할때도 편하다.

 

  예> 명칭.xml

 <select id="selectForList" resultType="Comment">

 SELECT comment_no,user_id,comment_content,reg_date FROM comment

  </select>

 

  

 

- 객체 프로퍼티를 Prepared 구문의 파라미터로 자동으로 매핑한다.

 

 예> 마이바티스 코드

 

 

public List<Comment> queryForList(){

 

   InputStream inputStream =

 

   Resources.getResourceAsStream("mybatis-config.xml");

 

   SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

 

   return sqlSessionFactory.selectList("selectForList");

 

}

 

 

 

- 조회 결과를 객체로 자동으로 매핑한다.

 

- N+1 쿼리의 문제를 제거하게 지원한다.

 

- 트랜잭션을 관리하다.

 

- 스프링 같은 외부 트랜잭션 관리자를 사용할 수 있다.

 

- 스프링 연동 모듈을 제공해서 스프링과 연동 할 수 있다.

 

 

2. 마이바티스 프로젝트

 

마이바티스는 코어프레임워크,마이바티스 제너레이터,스키마 마이그레이션의 3가지 프로젝트로 나뉘어 진다.

 

① 코어프레임워크

- JDBC를 단순화하고 SQL을 XML에 정의하게 해주는 마이바티스의 가장 큰부분이다.

마이바티스라는 지칭은 모두 코어 프레임워크를 가리킨다.

 

② 마이바티스 제너레이터

- 테이블별로 SQL과 자바 모델 클래스를 자동으로 만들어준다.

 

③ 스키마 마이그레이션

- 데이터베이스가 변경되면 그에 맞게 마이바티스 관련 파일을 변경해 주는 도구이다.

사실상 데이터베이스를 변경하는 일은 많지 않기때문에 사용할 기회가 거의 없다.

 

 

3. 자바 외 마이바티스를 쓰는 언어

- 스칼라 마이바티스

  스칼라는 자바의 JVM 위에서 동작하는 함수형 언어이다.

  자바에서 사용하던 각종 라이브러리도 그대로 사용할 수 있고 자바의 객체지향 특징도 모두 갖고 있기때문에

자바용 마이바티스 프로젝트에 포함되 있다.

스칼라에 대해서는 스칼라 홈페이지인 http://www.scala-lang.org/에서 얻을 수 있고

스칼라를 위한 마이바티스는 http://www.mybatis.org/scala/에서 정보를 얻을 수 있다.

 

- 닷넷 마이바티스

마이크로소프트사의 닷네을 지원하는 마이바티스다.

http://code.google.com/p/mybatisnet/에서 자세한 정보를 얻을 수 있다.

 

 

4. 연동 모듈

 

① 스프링 연동 모듈

자바개발자가 가장 많이 사용하는 프레임워크로 웹,배치,소셜 등의 다양한 기능을 제공한다.

스프링 연동 모듈은 스프링과 마이바티스를 연동하는 API를 제공한다.

 

② 구글쥬스 연동 모듈

구글에서 만든 개발 프레임워크인 구글쥬스와 연동할 때 사용하는 모듈이다.

 

③ Hazelcast 캐시 연동 모듈

마이바티스의 자체 캐시와 OsCache 는 서버별로 캐시를 저장하는 로컬 캐시이다.

서버를 여러대 두고 서비스할때 서버마다 동일한 캐시내용을 가지려면 여러대의 서버가 동일한 캐시내용을

볼 수 있게 분산 캐시를 사용해야 하는데 이때 분산캐시를 지원하는 캐시라이브러리이다.

마이바티스와 Hazelcast를 함께 사용하기 편하도록 기능을 제공한다.

 

하지만 대부분 마이바티스가 여러 프로젝트로 구성되있고 연동모듈을 제공하지만

자주 사용하는 기능은 대부분 코어프레임워크와 마이바티스 제너레이터, 스프링과 캐시 연동모듈이다.

 

 

 

■ 마이바티스 구조

 

1. 설정파일

- mybatis-config.xml : 데이터베이스 설정과 트랜잭션 등 마이바티스가 동작하는 규칙을 정의한다.

 

2. 매퍼

- SQL을 XML에 정의한 매퍼 XML파일(1개이상) 과 SQL을 인터페이스의 메소드마다 에노테이션으로 정의한 매퍼 인터페이스를 의미한다.

 

3. 결과 매핑과 매핑 구문

- 조회결과를 자바 객체에 설정하는 규칙을 나타내는 결과 매핑과 SQL을 XML에 정의한 매핑구문을 말한다.

매핑구문을 정의하는 방법은 애노테이션과 XML 방식 두가지가 있다.

 

4. 지원하는 파라미터 타입

- Map 객체, 자바 모델클래스,원시타입(int,String등..)이 있다.

 

5. 지원하는 결과타입

- Map 객체, 자바 모델클래스,원시타입(int,String등..)이 있다.

 

 

 

■ 아이바티스와 마이바티스의 비교

 

구분 

 아이바티스

 마이바티스

 네임스페이스

선택 

필수 

 매핑구문정의

 XML만 사용

 XML과 애노테이션 사용

 동적 SQL

 XML엘리먼트만 사용

동적 SQL을 위한 XML 엘리먼트는 16개 내외

XML 엘리먼트 및 구문 빌더 사용

동적SQL을 위한 XML 엘리먼트는 4개내외 

 스프링연동

 스프링 자체 구현체 사용

마이바티스 별도 모듈 사용 

 지원계획

 공식적인 릴리스 없을 예정

 계속 릴리스 될 예정

 

 

 

※ 최근 많이 사용하는 ORM 제품들중 대표적으로 하이버네이트가 있다.

마이바티스는 ORM이라고 부르지는 않는다.

ORM의 경우 데이터베이스 테이블과 그관계를 모델에 매핑하는데 반해 마이바티스는 SQL과 모델을 매핑하기때문이다.

참고해 두면 좋을 듯하다.

 

 

Posted by dlfma1985