마이바티스(MyBatis)는 2010년 아이바티스(iBatis)를 포크하여 새로 업그레이드한 오픈소스 기반의 개발 표준 프레임워크이다. 아파치 라이선스(Apache License)를 따른다. 자바는 JDBC API를 제공해주지만, 이런 JDBC를 이용하면 1개 클래스에 반복된 코드가 존재하여 한 파일에 자바언어와 SQL 언어가 있어서 재사용성 등이 안좋아지는 단점이 있다. 마이바티스는 JDBC의 이러한 단점들을 개선했으며, 개발자가 작성한 SQL 명령어와 자바 객체를 매핑해주는 기능을 제공하며, 기존에 사용하던 SQL 명령어를 재사용한다.[1]
개요
마이바티스는 개발자가 지정한 SQL, 저장 프로시저 그리고 몇 가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다. 마이바티스는 데이터베이스 레코드에 원시 타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 애노테이션을 사용할 수 있다. 최신버전은 2019년 7월 15일 출시된 MyBatis 3.5.2이다.[2]
역사
2002년~2015년
- 2002년 07월 01일 : iBatis 1.0 공개
- 2004년 06월 17일 : iBatis 2.0 출시
- 2010년 05월 19일 : iBatis 3.0 공개
- 2010년 06월 16일 : iBatis 팀 Apahce Software Foundation에서 Google code로 이전, 명칭이 iBastis 에서 MyBatis로 변경되었다.
- 2012년 03월 11일 : MyBatis 3.1.0 출시
- 2012년 03월 12일 : MyBatis-Spring 1.1.0 출시
- 2012년 04월 11일 : MyBatis-Guice 3.3 출시
- 2012년 04월 16일 : MyBatis 3.1.1 출시
- 2012년 04월 22일 : MyBatis-Spring 1.1.1 출시
- 2012년 07월 26일 : [ANN] Mybatis for Scala Beta 2 출시
- 2012년 09월 10일 : MyBatis Schema Migrations 3.1.0
- 2013년 02월 21일 : MyBatis 3.2.0, MyBatis-Spring 1.2.0 출시
- 2013년 03월 10일 : MyBatis 3.2.1 출시
- 2013년 04월 02일 : MyBatis 3.2.2 출시
- 2013년 04월 30일 : MyBatis Velocity Scripting 1.0 출시
- 2013년 09월 30일 : MyBatis 3.2.3, MyBatis-Spring 1.2.1, MyBatis-Guice 3.5, MyBatis-Velocity 1.1, Migrations 3.1.1, Migrations Maven Plugin 1.1.0 출시
- 2013년 11월 10일 : Google code에서 Github로 이전
- 2014년 01월 17일 : MyBatis 3.2.4 출시
- 2014년 01월 19일 : MyBatis CDI Extension 1.0-beta1, Spring-1.2.2, Scala-1.0.2, Migrations-maven-plugin 1.1.1 출시
- 2014년 01월 25일 : Migrations 3.2.0 출시
- 2014년 02월 06일 : MyBatis - MyBatipse(Eclipse 플러그인) 출시
- 2014년 02월 15일 : MyBatis 3.2.5 출시
- 2014년 03월 18일 : Migrations-maven-plugin 1.1.2 출시
- 2014년 03월 21일 : MyBatis 3.2.6, MyBatis Hazelcast adapter 1.1.0, MyBatis Memcached adapter 1.0.0 출시
- 2014년 03월 25일 : MyBatis-Guice 3.6 출시
- 2014년 04월 07일 : MyBatis 3.2.7 출시
- 2014년 10월 11일 : MyBatis 3.2.8 출시
- 2015년 03월 08일 : MyBatis(FreeMarker 플러그인) 출시
- 2015년 05월 24일 : MyBatis 3.3.0 출시
- 2015년 06월 19일 : Mybatis-spring 1.2.3 출시
- 2015년 07월 28일 : MyBatis-Guice 3.7 출시
- 2015년 11월 26일 : Mybatis-Spring-Boot 출시
|
2016년~2019년
- 2016년 02월 11일 : MyBatis-Ignite 출시
- 2016년 02월 13일 : MyBatis 3.3.1, MyBatis-Spring 1.2.4 출시
- 2016년 03월 07일 : MyBatis-Ignite 1.0.0 출시
- 2016년 03월 15일 : Mybatis-spring-boot 1.0.1 출시
- 2016년 03월 29일 : Mybatis-Spring 1.2.5(hot-fix) 출시
- 2016년 04월 08일 : MyBatis-TypeHandlers-JSR310 1.0.0 출시
- 2016년 04월 19일 : MyBatis 3.4.0, MyBatis-Spring 1.3.0, Boot-Starter 1.1.1 출시
- 2016년 04월 24일 : MyBatipse(Eclipse 플러그인) 1.0.18 업데이트
- 2016년 05월 28일 : MyBatipse(Eclipse 플러그인) 1.0.19 업데이트
- 2016년 06월 09일 : MyBatis-Ignite 1.0.1 출시
- 2016년 06월 11일 : MyBatis Migrations 3.2.1, Migrations Maven Plugin 1.1.3 출시
- 2016년 06월 21일 : MyBatipse(Eclipse 플러그인) 1.0.20 업데이트
- 2016년 06월 25일 : MyBatis Generator 1.3.3 출시
- 2016년 06월 26일 : MyBatis 3.4.1, TypeHandlers-JSR310 1.0.1 출시
- 2016년 07월 20일 : MyBatipse(Eclipse 플러그인) 1.0.21 업데이트
- 2016년 08월 19일 : MyBatis Generator 1.3.4 출시
- 2016년 08월 23일 : MyBatis-Ignite 1.0.2 출시
- 2016년 08월 25일 : MyBatis-Guice 3.8 출시
- 2016년 09월 06일 : MyBatipse(Eclipse 플러그인) 1.0.22 업데이트
- 2016년 09월 07일 : MyBatis Generator 1.3.5 1.3.5 출시
- 2016년 10월 02일 : MyBatipse(이클립스 플러그인) 1.0.23 출시
- 2016년 12월 14일 : MyBatis-Ignite 1.0.3 출시
- 2016년 12월 25일 : MyBatipse(이클립스 플러그인) 1.0.24 출시
- 2017년 01월 04일 : MyBatis 3.4.2, MyBatis-Spring 1.3.1, Spring-Boot-Starter 1.2.0 및 TypeHandlers-JSR310 1.0.2 출시
- 2017년 03월 02일 : MyBatis(이클립스 플러그인) 1.1.0 출시
- 2017년 04월 08일 : MyBatis 3.4.4 출시
- 2017년 04월 10일 : MyBatis-Boot-Starter 1.2.1 및 1.3.0 출시
- 2017년 04월 25일 : MyBatis Migrations 3.3.0 및 TypeHandlers-ThreeTen-Extra 1.0.0 출시
- 2017년 05월 16일 : MyBatis-Ignite 1.0.5 출시
- 2017년 08월 20일 : MyBatis-Spring-Boot 1.2.2 및 1.3.1, MyBatis 3.4.5 출시
- 2017년 08월 22일 : MyBatis-Ignite 1.0.6 출시
- 2017년 09월 09일 : MyBatis-Guice 3.10 출시
- 2017년 12월 21일 : MyBatis Dynamic SQL 1.0.0, MyBatis Generator 1.3.6 출시
- 2018년 03월 11일 : MyBatis 3.4.6 출시
- 2018년 03월 14일 : MyBatis-Spring 1.3.2, MyBatis Migrations 3.3.2, MyBatis-Spring-Boot 1.3.2 출시
- 2018년 04월 25일 : MyBatis Dynamic SQL 1.1.0 출시
- 2018년 07월 04일 : MyBatis Generator 1.3.7 출시
- 2018년 07월 24일 : MyBatis(이클립스 플러그인) 1.1.2 출시
- 2018년 10월 14일 : MyBatis Migrations 3.3.5 출시
- 2019년 01월 20일 : MyBatis 3.5.0 출시
- 2019년 04월 08일 : MyBatis 3.5.1 출시
- 2019년 07월 15일 : MyBatis 3.5.2 출시[2]
|
특징
이전 버전과의 차이점
-
|
iBatis
|
MyBatis
|
최소 JDK 버전
|
1.4
|
1.5
|
패키지 구조
|
com.ibatis.*
|
opg.apache.ibatis.*
|
SqlMap.xml에서 변경사항
|
parameterMap
|
parameterType
|
엘리먼트 명칭 변경사항
|
SqlMapConfig SqlMap
|
Configuration mapper
|
네임스페이스 속성
|
선택
|
필수
|
[1]
SQL 문이 코드로부터 완전히 분리
기존에는 DAO 파일에 모든 SQL 문을 작성하였다. 하지만 MyBatis에서는 Mapper 파일에 SQL 코드를 입력해놓고 DAO 파일에서 필요할 때마다 가져와서 사용할 수 있다.
생산성
JDBC와 SQL을 유지하면서도 훨씬 더 적은 코드로도 JDBC처럼 작동한다. 자바 코드의 20%를 사용하여 JDBC 기능의 80%를 제공하는 간단한 프레임워크이며, 작성할 필요가 없는 JDBC 코드로 인한 분량 문제는 현저하게 줄어든다. (JDBC에 비해 62%정도이다.)
성능
성능 최적화 기법을 지원한다. 페이징 처리된 데이터 리스트를 읽어와서 사용할 때 불필요한 수천 개의 행을 한꺼번에 데이터베이스로부터 가져오는 것이 아니기 때문에 애플리케이션의 성능을 향상시킬수있다.[3]
SQL 문장과 프로그래밍 코드의 분리
작업의 분배 : 팀을 세분화하는 것을 돕는다.
SQL 문과 자바 코드와의 분리만으로도 자바 개발자는 Query 문을 신경 쓰지 않아도 된다.
SQL 문이 변경되더라도 파라미터값만 변경되지 않는다면 자바 소스에서 수정할 부분이 없기 때문이다.
이식성
자바, C#(iBatis.NET), Ruby(RBATIS) 등 어떠한 프로그래밍 언어로도 구현 가능하다.
데이터베이스 접근 클래스와 비지니스 로직을 담은 클래스의 분리, 이른바 DAO(Data Access Object) 패턴이 이러한 일을 담당한다. iBatis는 DAO 계층 구현을 위한 유틸리티 성격이면서 동시에 best practice 역할도 수행한다.
자주 쓰이는 데이터를 변경되지 않는 동안에 임시 보관한다. iBatis에서는 XML 설정만으로 캐시를 할 수 있다.
트랜잭션과 스레드 관리
트랜잭션 처리 역시 용이하다.[4]
사용법
SQL 문은 XML 파일이나 주석에 저장된다 . 아래는 자바 인터페이스와 MyBatis 애노테이션으로 구성된 MyBatis 매퍼를 나타낸 것이다.
package org.mybatis.example;
public interface BlogMapper {
@Select("select * from Blog where id = #{id}")
Blog selectBlog(int id);
}
문장은 다음과 같이 실행된다.
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
SQL 문과 매핑은 다음과 같이 XML 파일로 외부화 될 수도 있다.
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
<select id="selectBlog" parameterType="int" resultType="Blog">
select * from Blog where id = #{id}
</select>
</mapper>
문들은 마이바티스 API를 사용하여 실행할 수도 있다.
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101); [5]
종류
MyBatis
MyBatis는 자바용 SQL 매핑 프레임 워크이다. 아이바티스에서 버전 업그레이드가 되면서 긴 버그 목록을 수정하고 다중 데이터베이스 지원, 개선된 JDBC3 키 생성 지원, 스칼라 지원, 선택적 로깅, Performance 최적화 및 일부 다른 기능들을 제공한다.
MyBatis-Spring
MyBatis-Spring은 Mybatis를 지원하기 위해 제공된다. 이 라이브러리는 MyBatis가 Spring 트랜잭션에 참여할 수 있게 해주고, MyBatis mappers와 SqlSession
을 빌드하고 다른 bean에 삽입하고, MyBatis 예외를 Spring DataAccessException
으로 변환하며, 마지막으로 MyBatis에 대한 의존성이 없는 애플리케이션 코드를 빌드 할 수 있게 해준다.
MyBatis Velocity Scripting
MyBatis Velocity Scripting은 Apache Velocity 스크립팅 언어를 사용하여 Dynamic SQL 쿼리를 즉각적으로 생성할 수 있는 확장 기능이다. SQL 스크립트를 템플릿으로 처리하고, 마이바티스는 매개 변수를 적용하고, 실제 SQL을 생성하고, JDBC 매개 변수를 바인드하고, 모두를 실행한다. 모든 템플릿은 로드 할 때 미리 컴파일되므로 실행이 매우 빠르다.
MyBatis Migrations
MyBatis Migrations는 DDL 파일(마이그레이션 이라고 함)을 관리하는 데이터베이스 스키마 변경 사항을 추적하는 자바 명령 줄 도구이다 . 마이그레이션을 통해 데이터베이스의 현재 상태를 쿼리하고 스키마 변경 사항을 적용한 다음 실행 취소 할 수 있다. 또한 다른 개발자가 작성한 동시 데이터베이스 스키마 변경을 감지하고 해결하는 데 도움이 된다.
MyBatis Ignite
MyBatis Ignite는 Apache Ignite 분산 메모리 내 플랫폼을 2차 수준 캐시로 사용할 수 있다. 기존의 디스크 기반 또는 플래시 기술을 통해 가능한 한 빠른 속도로 대규모 데이터 세트를 실시간으로 처리하고 처리하기 위한 고성능, 통합 및 분산 메모리 내장 플랫폼이다.
MyBatis Generator
MyBatis Generator는 마이바티스 및 아이바티스 용 코드 생성기이다.. MyBatis Generator는 데이터베이스 테이블(또는 여러 테이블)을 검사하고 CRUD 작업(만들기, 검색, 업데이트, 삭제) 을 수행하는 데 필요한 MyBatis 아티팩트를 생성한다.
이클립스(Eclipse) 플러그인을 사용할 수 있습니다. 이클립스 플러그인을 사용하는 경우에만 재생성의 경우 사용자 정의 코드가 보존된다.
MyBatipse
MyBatipse는 이클립스 플러그인이다.
MyBatis Dynamic SQL
이 라이브러리는 동적 SQL 문을 생성하기위한 프레임 워크이다. MyBatis 3 및 Spring JDBC 템플릿을 추가적으로 지원하여 타입 안정적인 SQL 템플릿 라이브러리라고 생각하면 된다.[2]
각주
- ↑ 1.0 1.1 빨간색소년, 〈mybatis Framework (마이바티스 개념, ibatis와 차이, 구조, api, SqlSession)〉, 《티스토리》, 2018-01-03
- ↑ 2.0 2.1 2.2 마이바티스 공식 홈페이지 - https://blog.mybatis.org/
- ↑ 기계새, 〈iBatis란?〉, 《티스토리》, 2012-03-28
- ↑ 꿀벌, 〈iBatis란?〉, 《네이버 블로그》, 2010-10-01
- ↑ 〈MyBatis〉, 《위키피디아》
참고 자료
- 마이바티스 공식 홈페이지 - https://blog.mybatis.org/
- 〈MyBatis〉, 《위키피디아》
- 꿀벌, 〈iBatis란?〉, 《네이버 블로그》, 2010-10-01
- 기계새, 〈iBatis란?〉, 《티스토리》, 2012-03-28
- 빨간색소년, 〈mybatis Framework (마이바티스 개념, ibatis와 차이, 구조, api, SqlSession)〉, 《티스토리》, 2018-01-03
- Packt, 〈Why MyBatis〉, 《Packt》, 2013-07-10
- 대바보, 〈MyBatis란?〉, 《티스토리》, 2017-11-27
- iotsw, 〈MyBatis란?〉, 《티스토리》, 2016-05-31
같이 보기
이 마이바티스 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.
|
개발 : 프로그래밍 □■⊕, 소프트웨어, 데이터, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
프로그래밍 언어
|
ASP • C 언어 • C++ • C# • CSS • D 언어 • HTML • HTML5 • JSP • PHP • R • XHTML • XML • XSLT • 고(Go) • 고급언어 • 기계어 • 델파이 • 러스트 • 루비 • 루아 • 리액트 • 리퀴디티 • 무브 • 미켈슨 • 베이직 • 브이비스크립트 • 비주얼 C++ • 비주얼베이직(VB) • 비주얼베이직닷넷(VB.NET) • 솔리디티 • 스몰토크 • 스위프트 언어 • 스칼라 • 스크립트 언어 • 알골 • 어셈블리 • 언리얼스크립트 • 얼랭 • 에이잭스(Ajax) • 엠에프씨(MFC) • 오브젝티브-C • 오브젝트 파스칼 • 오카멜 • 웹어셈블리(WASM) • 이와즘(eWASM) • 자바 • 자바스크립트 • 저급언어 • 제이슨(JSON) • 제이쿼리(jQuery) • 카멜 • 코볼 • 코틀린 • 콜드퓨전 • 타입스크립트 • 파스칼 • 파워스크립트 • 파이썬 • 펄(Perl) • 포트란 • 프로씨(Pro-C) • 피엘에스큐엘(PL/SQL) • 피엘원(PL/I) • 하스켈
|
|
개발방법론
|
CBD 개발방법론 • EA • 구조적 개발방법론 • 객체지향 개발방법론 • 라이브러리 • 람다 아키텍처 • 모듈 • 모듈화 • 벤치마킹 • 소프트웨어 개발방법론 • 스크럼 • 스프린트 • 아키텍처 • 아키텍트 • 애자일 • 웹개발방법론 • 정보공학 개발방법론 • 컴포넌트 • 테일러링 • 템플릿 • 폭포수 모델 • 프로젝트 • 프로토타입 • 피드백
|
|
코딩
|
EUC-KR • UTF-8 • 값 • 글루웨어 • 디버깅 • 디코딩 • 마크업 • 버그 • 부트스트랩 • 세이브포인트 • 소스코드 • 시큐어코딩 • 아스키 • 액티브엑스 • 오픈소스 • 유니코드 • 인코딩 • 재컴파일 • 주석 • 컴파일 • 컴퓨터 프로그램 • 코드 • 코딩 • 태그 • 테스트 • 테이블 • 텍스트 • 파싱 • 퍼블리싱 • 퓨니코드 • 하드코딩 • 하이퍼링크 • 하이퍼텍스트
|
|
프로그래밍
|
C 명령어 • 객체 • 객체지향 • 객체지향 프로그래밍 • 거짓 • 관계연산자 • 기본형 변수 • 널 • 논리 • 논리연산 • 논리연산자 • 다중상속 • 다형성 • 대입 • 대입문 • 대입연산자 • 더블 • 도스 명령어 • 디폴트 • 레지스터변수 • 루프 • 리눅스 명령어 • 리턴 • 메모리 주소 • 메소드 • 멤버 • 명령문 • 명령어 • 무한루프 • 문자 • 문자열 • 바이트 • 반복문 • 배열 • 변수 • 분기 • 분기문 • 불린 • 브레이크 • 비교연산자 • 비트연산자 • 산술연산자 • 상속 • 상수 • 생성자 • 선언 • 선언문 • 설정자 • 속성 • 스위치 • 스태틱 • 시프트연산자 • 실행 • 실행문 • 어노테이션 • 에코 • 역참조 • 연산 • 연산문 • 연산자 • 오버로딩 • 오버라이딩 • 외부변수 • 윈도우 명령어 • 유닉스 명령어 • 인스턴스 • 인스트럭션 • 인클루드 • 인터페이스 • 임포트 • 입력 • 입력문 • 입출력 • 입출력문 • 자료형(데이터 타입) • 자바 명령어 • 자바 예약어 • 자바 컬렉션 • 전역변수 • 접근자 • 접근제어자 • 정보은닉 • 정수형 • 정적변수 • 제어 • 제어문 • 제어자 • 조건 • 조건문 • 조건연산자 • 주소 • 증감연산자 • 지역변수 • 참 • 참조 • 참조변수 • 초기화 • 추상메소드 • 추상클래스 • 추상화 • 출력 • 출력문 • 캡슐화 • 케이스 • 클래스 • 파라미터(매개변수) • 파이널 • 패키지 • 퍼블릭 • 포인터 • 프라이빗 • 프로텍티드 • 필드(멤버변수) • 함수 • 환경변수
|
|
명령어
|
abstract • array • boolean • break • byte • case • char • continue • default • double • do while • echo • elif • else • else if • false • final • float • for • gosub • goto • if • if else • import • include • int • join • long • long long • null • print • printf • println • private • protected • public • return • scanf • short • stdio.h • static • string • switch • temp • then • true • unsigned • void • while
|
|
디자인패턴
|
구조패턴 • 동시성패턴 • 동시실행패턴 • 모델-뷰-컨트롤러 패턴 • 상태패턴 • 생성패턴 • 싱글톤패턴 • 아키텍처패턴 • 전략패턴 • 커맨드패턴 • 행동패턴
|
|
프로그래밍 인물
|
귀도 반 로썸 • 그레이스 머레이 호퍼 • 니클라우스 비르트 • 댄 브릭클린 • 더그 커팅 • 데니스 리치 • 리누스 토르발스 • 리처드 그린블라트 • 마거릿 해밀턴 • 마크 앤드리슨 • 빈트 서프 • 빌 게이츠 • 빌 조이 • 스티브 잡스 • 에이다 러브레이스 • 제임스 고슬링 • 척 벤턴 • 켄 톰슨 • 팀 패터슨
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|