2021.08.05
역시나 덥습니다. 10시에 나와 집앞 카페에서 글을 쓰고 있습니다.
오늘은 학교 공모전용 웹 어플리케이션 제작 중 사용하고 있는 mybatis에 대해서 정리해보려고 합니다.
1. mybatis란
mybatis란 자바의 관계형 데이터베이스 프로그래밍을 더 쉽게 할 수 있게 도와주는 개발 프레임 워크입니다.
JDBC를 통해 DB에 엑세스하는 작업을 캡슐화하고 일반 sql 쿼리 및 매핑을 지원합니다. 그 외에도 또 다양한 기능들이 많습니다. mybatis를 사용하면 프로그램에 있는 sql 쿼리들을 한 구성파일에 넣어 프로그램 코드와 sql을 분리할 수 있다는 큰 장점을 가집니다. ( 처음 써봤는데 자바 코드에 쓰지 않고 따로 mapper에 모아 관리하니 아주 편리했습니다. )
resultType, resultClass 등 Vo를 사용하지 않고 조회결과를 사용자 정의 DTO, MAP 등으로 맵핑하여 사용 할 수 있습니다. 결과적으로 빠른 개발과 생산성 향상을 가져옵니다.
mybatis는 복잡한 쿼리에 강합니다. 반대로 단순하거나 비슷한 쿼리는 남발하게 되는 단점이 있습니다.
2. mybatis 실행 과정
mybatis는 data access layer에서 사용하는 프레임워크입니다. mybatis config file을 xml파일로 작성하면
controller에서 service를 호출하고 service가 DAO 계층에 있는 메소드를 호출하면 DAO에서 mybatis를 호출합니다.
실행 과정을 정리한 글을 찾다가 훌륭한 글이 있어 출저를 밝히고 가져왔습니다.
---------------------------------------------------------------------------------------------------------------------------------
[ 응용 프로그램 시작 시 수행되는 프로세스 ]
1. 응용 프로그램이 SqlSessionFactoryBuilder를 위해 SqlSessionFactory를 빌드하도록 요청합니다.
2. SqlSessionFactoryBuilder는 SqlSessionFactory를 생성하기 위한 MyBatis 구성 파일을 읽습니다.
3. SqlSessionFactoryBuilder는 MyBatis 구성 파일의 정의에 따라 SqlSessionFactory를 생성합니다.
[ 클라이언트의 각 요청에 대해 수행되는 프로세스 ]
4. 클라이언트가 응용 프로그램에 대한 프로세스를 요청합니다.
5. 응용 프로그램은 SqlSessionFactoryBuilder를 사용하여 빌드된 SqlSessionFactory에서 SqlSession을 가져옵니다.
6. SqlSessionFactory는 SqlSession을 생성하고 이를 애플리케이션에 반환합니다.
7. 응용 프로그램이 SqlSession에서 매퍼 인터페이스의 구현 개체를 가져옵니다.
8. 응용 프로그램이 매퍼 인터페이스 메서드를 호출합니다.
9. 매퍼 인터페이스의 구현 개체가 SqlSession 메서드를 호출하고 SQL 실행을 요청합니다.
10. SqlSession은 매핑 파일에서 실행할 SQL을 가져와 SQL을 실행합니다.
---------------------------------------------------------------------------------------------------------------------------------
[MyBatis] MyBatis란? 개념 및 데이터구조
MyBatis란? 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 S
khj93.tistory.com
3. mybatis 쓰기 전엔?
쓰기 전엔, 자바 파일 안에서 stringbuffer 같은 클래스를 호출했고 sql이라는 객체를 만들어 append 메소드를 사용해 문자를 계속 이어주면서 sql query를 작성했습니다.
이러한 방식은 쿼리가 수정될 때 마다 매번 자바 파일에 들어가야 되는 불편함, 쿼리 양이 많아질수록 코드가 복잡해지고 양이 많아지는 불편함이 발생했습니다.
그래서 xml로 빼내서 쿼리문을 작성하게 됐습니다.
웹 어플리케이션에 대해 알면 알수록 공부해야할 것들이 늘어나는 것 같습니다.
오늘은 여기서 마치겠습니다.
'Spring' 카테고리의 다른 글
session, Session의 동작 순서, Session 사용 코드 (0) | 2021.08.07 |
---|---|
Tiles, dependency (0) | 2021.08.07 |
spring responsebody, get/post mapping (0) | 2021.08.04 |
spring controller, requestmapping, requestparam (0) | 2021.08.03 |
spring component, autowired, Inject, Controller, Repository (0) | 2021.08.02 |