MyBatis
- MyBatis는 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 Object Mapper이다
- ORM 기술은 아니다!
- SQL을 별도의 파이로 분리해서 관리하게 해준다.
- Hibernate나 JPA처럼 새로운 DB 프로그래밍 패러다임을 익혀야 하는 부담 없이, 개발자가 익숙한 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함도 제거해주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능하다
MyBatis의 특징
- 가장 간단한 퍼시스턴트 프레임워크
- XML형태로 서술된 JDBC 코드라고 생각해도 될만큼 JDBC의 모든 기능을 대부분 제공
- 복잡한 JDBC 코드를 걷어내며 깔끔한 소스코드 유지 가능
- SQL문과 프로그래밍 코드의 분리
- SQL에 변경이 있을 때마다 자바 코드 수정, 컴파일이 필요없음
- SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수 도 있음
- 다양한 프로그래밍 언어로 구현 가능(Java, C#, .NET, Ruby)
MyBatis의 주요 컴포넌트 역할
MyBatis 설정파일
- 데이터베이스 접속 주소 정보나 Mapping 파일의 경로 등 고정된 환경정보 생성
- MyBatis-Spring 연동모듈을 사용하면 MyBatis 설정파일의 내용은 거의 사용하지 않는다.
SqlSession FactoryBuilder
- MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성
SqlSessionFactory
SqlSession
- 핵심적인 역할을 하는 클래스로 SQL 실행이다 트랜잭션 관리를 실행
- SqlSession 오브젝트는 Thread-Safe하지 않으므로 thread마다 필요에 따라 생성한다.
mapping 파일
MyBatis 설정
MyBatis, MyBatis-Spring 의존성 추가
- MavenRepository에 MyBatis, MyBatis-Spring 검색 후 Dependency 추가
MyBatis 메인설정파일 mybatis-config.xml 설정
sqlSessionFactory, sqlSession 설정
- datasource.xml파일 내 sqlSessionFactory 설정
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="datasource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations">
<list>
매퍼 작성(DAO와 매핑 => mappers 폴더 생성 수 mapper 파일 작성)
<value></value>
</list>
</property>
</bean>
<bean id="sqlSession" class="org.mybastis.spring.SqlSessionTemplate"/>
<constructor-arg ref="sqlSessionFactory"/>
</bean>
Mapper 파일 설정
- eclipes marketplace에서 mybatipes 검색 후 설치
- mappers 폴더안에 MyBatis XML Mapper 파일(article-mapper.xml)