스프링 16강 - MyBatis 개요
https://www.youtube.com/watch?v=9b5P4YiyqOY&list=PL9mhQYIlKEhfYqQ-UkO2pe2suSx9IoFT2&index=17&t=0s
학습 목표
1. MyBatis의 개요와 특징에 대하여 이해할 수 있다.
2. MyBatis와 MyBatis-Spring의 주요 컴포넌트에 대하여 이해할 수 있다.
3. MyBatis-Spring을 사용한 예제에 대하여 이해할 수 있다.
1. MyBatis의 개요와 특징에 대하여 이해할 수 있다.
MyBatis는 자바 오브젝트와 SQL문 사이의 자동 Mapping 기능을 지원하는 ORM 프레임워크이다.
MyBatis의 특징
1. 쉬운 접근성과 코드의 간결함
- 가장 간단한 퍼시턴스 프레임워크
- XML 형태로 서술된 JDBC 코드라고 생각해도 될 만큼 JDBC의 모든 기능을 MyBatis가 대부분 제공한다.
- 복잡한 JDBC코드를 걷어내며 깔끔한 소스코드를 유지할 수 있다.
- 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있다.
2. SQL문과 프로그래밍 코드의 분리
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일 하지 않아도 된다.
- SQL 작성과 관리 또는 검토를 DBA와 같은 개발자가 아닌 다른 사람에게 맡길 수도 있다.
3. 다양한 프로그래밍 언어로 구현가능
- JAVA, C#, .NET, Ruby
2. MyBatis와 MyBatis-Spring의 주요 컴포넌트에 대하여 이해할 수 있다.
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-Spring의 주요 컴포넌트
특징 : SqlSession은 Thread-safe 하지 않지만, SqlSessionTemplate는 thread-safe 하다.
MyBatis-Spring의 주요 컴포넌트의 역할
MyBatis 설정파일 (SqlMapConfig.xml) |
- VO 객체의 정보를 설정한다. (DB 접속정보, MappingFile위치는 스프링 Bean에 설정한다.) |
SqlSessionFactoryBean |
- MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성한다. - Spring Bean으로 등록해야 한다. |
SqlSessionTemplate |
- 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다. - SqlSession 인터페이스를 구현하며, Thread-Safe 하다. - Spring Bean으로 등록해야 한다. |
Mapping 파일 (user.xml) |
- SQL문과 OR Mapping을 설정한다. |
Spring Bean 설정파일(bean.xml) |
- SqlSessionFactoryBean을 Bean 등록할 때 DataSource 정보와 MyBatis Config 파일정보, Mapping 파일 정보를 함께 설정한다. - SqlSessionTemplate을 Bean으로 등록한다. |
MyBatis-Spring을 사용한 예제