[Servlet&JSP] MyBatis framework 초기 설정하기

KKS·2023년 8월 17일
post-thumbnail

개요

MyBatis framework

  • 기존의 순수 JDBC방법은 Java 코드와 SQL문이 혼합되어 있는 형태로 DB와 연결하고 쿼리문을 전송하는 데 반해, MyBatis framework를 이용하면 Java코드에서 SQL문을 분리시킨 후, MyBatis API를 이용해 연결(Mapping)하는 방법을 이용한다.
  • 따라서, MyBatis framework를 SQL Mapping Framework라고도 한다.
  • MyBatis framework는 JDBC를 보다 편리하게 사용할 수 있는 API를 제공한다.
    -> ex) org.apache.ibatis.session.SqlSessionFactoryBuilder
  • 개발자의 하드코딩에서 벗어나 유지보수와 개발속도 측면에서 기존의 순수 JDBC를 이용하는 것보다 효율적으로 개발할 수 있다.

1. 세 개의 설정파일 생성 후, config.xml에 연동

https://mybatis.org 접속

1) config.xml : mybatis 기본 환경설정 파일로써, 추후에 이 파일에 db.properties과 Mapper.xml파일을 연결시키고 mybatis API를 이용해 읽어들일 것이다.

  • MyBatis 사이트에 접속해서 아래의 내용을 복사 후 config.xml파일에 붙여넣기한다.

2) db.properties : DB접속 정보(driver, url, username, password)를 저장해놓는 파일.

3) Mapper.xml : SQL문장을 저장해놓는 파일.

  • MyBatis 사이트에 접속해서 아래의 내용을 복사 후 Mapper.xml파일에 붙여넣기한다.
  • < mapper> 태그의 namespace에 mapper이름을 설정한다.
  • 일반적으로 mapper파일이 속한 패키지명 + mapper파일 이름으로 작명한다.

4) (중요)위에서 생성한 config.xml파일에 db.properties과 Mapper.xml파일을 연결시킨다.

  • < properties> 태그에 db.properties 파일을 연결시킨다.
  • < mapper> 태그에 Mapper.xml 파일을 연결시킨다.
  • 완성된 config.xml파일은 MyBatis에서 제공하는 API (org.apache.ibatis.session.SqlSessionFactoryBuilder)에 의해 읽혀지고, 아래에서 설명할 SqlSessionFactory객체를 생성하는 데 사용된다.

2. MyBatis API 다운로드

  • mybatis-3.4.6.jar(MyBatis API) 다운로드 후, lib폴더에 붙여넣는다.

3. 완성된 config.xml파일로부터 SqlSessionFactory객체 빌드하기

  • MyBatis 사이트에 접속해서 아래의 내용을 복사 후, DAO에 붙여넣기한다.

  • resource에 위에서 완성한 config.xml파일을 저장한다.

  • MyBatis API를 이용해 위에서 완성한 config.xml파일을 읽어들이고, SqlSessionFactory객체를 얻는다.

  • SqlSessionFactory : 여러 SqlSession(= Connection객체 : DB 연결 객체)들이 존재하는 메모리 공간. 생성된 Connection Pool의 메모리 공간을 참조하는 참조변수.

  • Connection Pool기법 : 미리 SqlSession객체들을 만들어 놓아 각 객체마다 DB에 접속을 시켜놓고, 사용자들이 DB작업을 할 때마다 SqlSessionFactory에서 Session객체들을 꺼내와 사용하고 반납, 재활용하는 기법
    -> 순수 JDBC방법은 사용자가 DB작업을 할 때마다 Connection객체를 생성하고, 작업 후 끊기 때문에 부하가 많이 걸린다.
    -> Connection Pool기법은 미리 DB에 접속을 해놓고 사용자의 DB작업 후 Connection을 끊지 않고 재활용하기 때문에 순수 JDBC보다 접속시간을 단축시키고 성능향상에 기여한다.

  • 아래와 같이 DAO의 내용을 수정하면, MyBatis API를 이용해 작성한 config.xml파일을 읽어들이고, SqlSessionFactory객체를 얻을 수 있다.

public class MemberDAO {

	private static SqlSessionFactory sqlSessionFactory;

	static {
		try {
			String resource = "kr/bit/mybatis/config.xml";
			InputStream inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}	
}

요약

config.xml을 읽어들인 최종 상태를 그림으로 표현하면 다음과 같다.

0. SqlSessionFactory객체 내부의 SqlSession객체들을 DB와 미리 연결시켜 놓는다.
1. 사용자는 DB작업을 수행하기 위해, SqlSession객체를 얻어온다.
2. SqlSession객체를 이용하여 DB에 쿼리문을 전송한다.
3. DB작업이 끝나면, 사용한 SqlSession객체를 SqlSessionFactory로 반납한다.

profile
공부하고 이해한 내용들을 직접 그림과 표를 그리면서 정리해보는 공간입니다.🤗

1개의 댓글

comment-user-thumbnail
2023년 10월 10일

열심히 하시는군요! 응원합니다!!!

답글 달기