
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 : mybatis 기본 환경설정 파일로써, 추후에 이 파일에 db.properties과 Mapper.xml파일을 연결시키고 mybatis API를 이용해 읽어들일 것이다.

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

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

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



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로 반납한다.
열심히 하시는군요! 응원합니다!!!