실전 개발자를 위한 Spring Framework Day15
MyBatis 소개
1. MyBatis 개요
- MyBatis는 자바 오브젝트와 SQL문 사이와 자동 Mapping 기능을 지원하는 Object Mapper이다
- SQL을 별도의 파일로 분리해서 관리하게 해주며, 객체와 SQL 사이의 파라미터 Mapping 작업을 자동으로 해준다
- Hibernate나 JPA(Java Persistence Api)처럼 새로운 DB프로그래밍 패러다임을 익혀야하는 부담 없이 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거한다
- VO 객체(=도메인 객체)를 중심으로 개발 가능하다는 장점이 있다
MyBatis의 특징
- 쉬운 접근성과 코드의 간결함
- 가장 간단한 Persistence Framework
- XML 형태로 서술된 JDBC 코드라고 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공한다
- 복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다
- 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있다
- SQL문과 프로그래밍 코드의 분리
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다
- SQL 작성과 관리를 개발자 대신 DBA와 같은 다른 사람에게 맡길 수 있다
- 다양한 프로그래밍 언어로 구현 가능
- Java, C#, .NET, Ruby
MyBatis3 주요 컴포넌트의 역할
- MyBatis 설정파일(SqlMapConfig.xml)
- 데이터베이스 접속 주소와 Mapping 파일의 경로 등 고정된 환경정보를 설정
- SqlSession FactoryBuilder
- MyBatis 설정 파일을 바탕으로 SqlSessionFactory 생성
- SqlSessionFactory
- SqlSession 생성
- SqlSession
- 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행
- SqlSession 오브젝트는 Thread-Safe하지 않으므로 thread마다 필요에 따라 생성
- Mapping 파일(user.xml)
- SQL문과 OR Mapping을 설정
MyBatis-Spring 주요 컴포넌트의 역할
- MyBatis 설정파일(sqlMapConfig.xml)
- VO 객체의 정보를 설정
- SqlSession FactoryBean
- MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성
- Spring Bean으로 등록한다
- SqlSessionTemplate
- 핵심적인 역할을 하는 클래스로서 SQL실행이나 트랜잭션 관리를 실행
- SqlSession 인터페이스를 구현하며, Thread-safe하다
- Spring Bean으로 등록해야 한다
- Mapping 파일(user.xml)
- SQL문과 OR Mapping을 설정
- Spring Bean 설정파일(beans.xml)
- SqlSessionFactoryBean을 Bean 등록할 때 DataSource 정보와 MyBatis Config 파일 정보, Mapping 파일의 정보를 함께 설정한다
- SqlSession Template을 Bean으로 등록한다