290570
MyBatis 본문
#MyBatis
JDBC 를 통해 RDBMS에 액세스 하는 작업을 캡슐화하고, 기존 JDBC 의 중복 작업을 간소화 해줌
XML 파일 형태인 mapper를 통해 프로그램 코드로부터 sql 쿼리가 분리되는 환경 제공 및 java 객체와 매핑하는 작업 도와줌
(XML mapper : sql 쿼리를 xml 파일 안에 따로 정의 가능, 프로그램 코드와 sql 쿼리문 분리되어 독립적 관리 가능)
#기존 JDBC
Repository > JDBC API : DB연결
#MyBatis 사용
Repository > MyBatis > JDBC API : DB연결
#MyBatis 컴포넌트
MyBatis Config File ( MyBatis 설정파일) : dbConfig.xml (DB 정보 및 Mapping 파일 경로 등 설정)
SqlSessionFactoryBuilder : MyBatis 설정파일 읽고 SqlSessionFactory 생성
SqlSessionFactory : SqlSession 생성
SqlSession : Sql 실행, 트랜잭션 관리
Mapping File : mapper.xml (Sql, 객체 매핑설정)
(SqlSession은 Thread-safe 하지 않음 : 여러 thread가 동시에 SqlSession 사용하면 안됨 / 각 thread 마다 독립적으로 사용해야 함)
#어플리케이션 실행 시
1. 어플리케이션이 SqlSessionFactoryBuilder에게 SqlSessionFactory 빌드 요청
2. SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위해 MyBatis Config File 읽음
3. SqlSessionFactoryBuilder는 MyBatis Config File의 정의에 따라 SqlSessionFactory 생성
#클라이언트 요청 시
4. 클라이언트의 어플리케이션에 대한 요청
5. 어플리케이션은 SqlSessionFactoryBuilder를 사용하여 빌드된 SqlSessionFactory 에서 SqlSession 가져옴
6. SqlSessionFactory는 SqlSession 생성 및 어플리케이션에 반환
7. 어플리케이션이 SqlSession에서 Mapper Interface 구현 개체 가져옴
8. 어플리케이션이 Mapper Interface의 메소드 호출
9. Mapper Interface의 구현 개체가 SqlSession 메소드 호출 및 sql 실행 요청
10. SqlSession은 Mapping File에서 실행할 sql 찾아서 실행
'java_spring (2024.05 ~ 2024.10)' 카테고리의 다른 글
Mail 보내기 (0) | 2024.08.12 |
---|---|
session 자동/수동 커밋 (0) | 2024.08.07 |
24.07.31 (0) | 2024.08.05 |
비밀번호 보기/숨기기 (0) | 2024.07.30 |
trouble shooting (0) | 2024.07.29 |