MyBatis
MyBatis는 Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM Framework이다.
MyBatis는 SQL을 별도의 파일로 분리해서 관리한다.
MyBatis의 특징
1. 쉬운 접근성과 코드의 간결함
- 가장 간단한 persistence framework
- XML 형태로 작성된 JDBC 코드라 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공한다.
- 복잡한 JDBC 코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다.
- 수동적인 parameter 설정과 Query 결과에 대한 mapping 구문을 제거
2. SQL문과 프로그래밍 코드의 분리
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 된다.
- SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수 있다.
3. 다양한 프로그래밍 언어로 구현 가능하다
- JAVA, C#, .NET, Ruby 등.
MyBatis 3의 주요 Component의 역할
MyBatis 설정 파일 (sqlMapConfig.xml)
데이터베이스의 접속 주소 정보나 객체의 alias, Mapping 파일의 경로 등의 고정된 환경 정보를 설정한다.
SqlSessionFactoryBuilder
MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다.
SqlSessionFactory
SqlSession을 생성한다.
SqlSession
핵심적인 역할을 하는 클래스로 SQL 실행이나 Transaction 관리를 실행한다. SqlSession 오브젝트는 Tread-safe하지 않으므로 thread마다 필요에 따라 생성해야 한다.
mapping 파일 (ex> member.xml)
SQL문과 ORMapping을 설정한다.
MyBatis-Spring의 주요 Component의 역할
MyBatis 설정 파일 (sqlMapConfig.xml)
DTO 객체의 정보를 설정한다.(Alias)
SqlSessionFactoryBean
MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성한다. Spring Bean으로 등록해야 한다.
SqlSessionTemplate
핵심적인 역할을 하는 클래스로서 SQL 실행이나 Transaction 관리를 실행한다. sqlSession interface를 구현하며, Thread-safe 하다. Spring Bean으로 등록해야 한다.
mapping 파일 (ex> member.xml)
SQL문과 ORMapping을 설정한다.
Spring Bean 설정 파일 (beans.xml)
SqlSessionFactoryBean을 Bean에 등록할 때 DataSource 정보와 MyBatis Config 파일 정보, Mapping 파일의 정보를 함께 설정한다. SqlSessionTemplate을 Bean으로 등록한다.