MyBatis란?


MyBatis의 개요와 특징

MYbatis와 Mybatis-Spring의 주요 컴포넌트

MyBatis-Spring 예제


MyBatis란?

- 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM 프레임워크이다.

(Object relational Mapping)

- MyBatis는 SQL을 별도의 파일로 분리해서 관리하게 해준다.

- 객체-SQL 사이의 파라미터 Mapping 작업을 자동으로 해주기 때문에 많은 인기를 얻고있다.

- 새로우 DB프로그래밍 패러다임을 익혀야하는 부담없다.

- SQL문 그대로 이용하면서 JDBC 코드작성의 불편함도 제거해준다.

- 도메인 객체나 VO객체를 중심으로 개발이 가능한 장점있다.


MyBatis의 특징


쉬운 접근성과 코드의 간결함

- 가장 간단한 퍼시턴스 프레임워크(ORM)

- XML형태로 서술된 JDBC코드라고 생각해도 될만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공한다.

- 복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다.

- 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있다.


SQL문과 프로그래밍 코드의 분리

- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 된다.

- SQL작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 사람에게 맡길 수도 있다.


다양한 프로그래밍언어로 구현가능

- java,C#, .NET등


MyBatis3와 MyBatis-Spring의 주요 컴포넌트

Application     

 O/R

 JDBC

 JDBC

 Persistence

 Modules

 Mapper

 Interfaces

 Implementations

 Layer



JDBC는 저수준의 API

- JDBC를 MyBatis로 맵핑해서 사용(개발자가 사용편리)한다.


Data Access Layer에서 사용(DAO)



MyBatis3의 주요 컴포넌트

Mybatis설정파일(SqlMapCongif.xml)

- 데이터베이스의 접속 주소 정보나 Mapping파일의 경로(SQL포함한파일)등의 고정된 환경정보를 설정한다.

SqlSession Factory Builder(호출)

- 정보를 읽어온다.

- 읽어온 정보로 SqlSession Factory생성한다.

SqlSession Factory

- 읽어온 정보로 SqlSession 생성한다.

SqlSession(핵심역할)

- 컴포넌트 생성 개발자에게 리턴해준다.

- SQL문을 호출해주는 기능,트랜잭션 관리도 실행한다.




Beans.xml에서 설정해야하는 것.

SqlSessionFactoryBean


SqlSessionTemplate


MyBatis-Spring의주요 컴포넌트 역할이다.


Mybatis 설정파일

sqlMapConfig.xml

 - VO객체의 정보를 설정한다.

 SqlSessionFactoryBean

 - MyBatis설정파일을 바탕으로 SqlSessionFactory를 생성한다.

 - SpringBean으로 등록해야함

 SqlSessionTemplate

 - 핵심적인 역할을 하는 클래스로서 SQL실행이나 프랜잭션 관리를 실행한다.

 - SqlSession 인터페이스를 구현하며, Thread-safe하다(멀티스레드환경에서도 안전하게사용가능)

 - Sqpring Bean으로 등록해야한다.


 Mapping파일

 - SQL문과 OR Mapping을 설정한다.

 Spring Bean

 - SqlSessionFactoryBean을 Bean에 등록할 때

  DataSource정보와 MyBatis Config파일정보,Mapping파일의 정보를 함께 설정

 - SqlSessionTemplate을 Bean으로 등록



'개발 소발 > 개발 Spring' 카테고리의 다른 글

Mybatis Mapper 인터페이스란?  (0) 2018.01.11
Mybatis 셋팅이란?  (0) 2017.12.21
AOP어플리케이션 작성 (annotation)이란?  (0) 2017.11.27
AOP어플리케이션 작성 (XML)이란?  (0) 2017.11.24
AOP란?  (0) 2017.11.24

+ Recent posts