MyBatis란?
SQL 기반의 영속성 계층 프레임워크 (Persistence layer framework)
- SQL과 자바 객채를 매핑하는 사상에서 개발된 데이터베이스 접근용 프레임워크
- SQL을 별도의 파일로 분리해서 관리하게 해준다
JDBC Framework
- Hibernate나 JPA 처럼 새로운 DB프로그래밍 패러다임을 익혀야 하는 부담없이 SQL을 그대로 이용
- JDBC 코드 작성의 불편함도 제거해주고 도메인 객체나 VO 객체를 중심으로 개발이 가능
특징
- SQL문과 프로그램 코드의 분리
- SQL을 설정파일이나 Annotation에 선언적으로 정의해서 자바로 작성된 비즈니스 로직(애플리케이션)에서 SQL 자체를 숨길 수 있음
- SQL에 변경이 있을 때마다 자바 코드를 수정하거나 컴파일하지 않아도 됨 - 쉬운 접근성과 코드의 간결함
- JDBC의 모든 기능을 MyBatis가 대부분 제공
- 복잡한 JDBC 코드를 걷어내고 깔끔한 소스코드를 유지할 수 있음
- 수동적인 파라미터 설정과 쿼리 결과에 대한 맵핑 구문을 제거할 수 있음 - 다양한 프로그래밍 언어로 구현 가능
- Java, C#, .NET, Ruby
MyBatis3 주요 컴포넌트 역할
MyBatis 설정파일 (SqlMapConfig.xml) |
- 데이터베이스의 접속 주소 정보나 Mapping 파일의 경로 등의 고정된 환경정보를 설정한다 |
SqlSessionFactoryBuilder | - MyBatis 설정 파일을 바탕으로 SqlSessionFactory를 생성 |
SqlSessionFactory | - SqlSession을 생성 |
SqlSession | - 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다 - SqlSession Object는 Thread-Safe 하지 않으므로 쓰레드마다 필요에 따라 생성한다 |
Maaping 파일 (*-mapper.xml) |
- SQL 문 OR Mapping(ORM)을 설정한다 |
SqlSessionFactoryBean | - MyBatis 설정파일을 바탕으로 SqlSessionFactory를 생성한다 - Spring Bean으로 등록해야 한다 |
SqlSessionTemplate | - 핵심적인 역할을 하는 클래스로서 SQL 실행이나 트랜잭션 관리를 실행한다 - SqlSession 인터페이스를 구현하며, Thread-Safe한다 - Spring Bean으로 등록해야 한다 |
MyBatis와 MyBatis-Spring을 사용한 DB Access Architecture
MyBatis를 사용하는 Data Access 계층 흐름도
반응형
'Java > Spring' 카테고리의 다른 글
[Spring] 스프링 AOP Pointcut 표현식 (0) | 2021.08.18 |
---|---|
[Spring] Bean 설정, 컴포넌트 스캔(Component Scan) (0) | 2021.06.01 |
[Spring] 스프링 AOP(관점지향 프로그래밍, Aspect-Oriented-Programming) (1) | 2021.05.24 |
[Spring] Maven? (0) | 2021.05.23 |
[Spring] IoC (제어 역전, Inversion Of Control) / DI (의존성 주입, Dependency Injection) (0) | 2021.05.20 |
댓글