Mybatis

my_mon·2022년 10월 20일
post-thumbnail

Mybatis란?

자바 객체와 개발자가 지정한 SQL 사이를 자동으로 매핑해주는 기능을 제공하는 프레임워크다. 자바 프로그램과 데이터베이스를 연결하여 데이터를 주고받을 수 있게 해주는 JDBC 인터페이스랑 비슷하지만, Mybatis는 JDBC보다 훨씬 편하다는 장점을 갖고 있다.

DaoImpl 클래스에서 직접 쿼리를 실행했던 JDBC 인터페이스 방식과는 다르게 Mybatis는 SQL문과 프로그램 코드가 분리된다.
JDBC는 DaoImpl 안에 자바 코드와 섞여서 작성되므로 유지보수가 어렵고 코드가 복잡해지는 반면 Mybatis는 SQL을 XML파일로 분리하여 작성하고 Dao에서 호출하기 때문에 유지보수가 용이해지고 가독성이 좋아진다.
JDBC를 통하여 파라미터를 수동으로 설정하고 결과집합 역시 DTO 객체에 수동으로 저장해줘야 하는 번거로움이 Mybatis에서는 대폭 줄어든다.

Mybatis 설정 준비

  1. 프로젝트 생성
  2. Mybatis 라이브러리 다운로드
  3. 압축해제 후 이클립스 프로젝트 - lib폴더에 .jar 파일 복사

Mybatis 기본 설정

  1. Mybatis 패키지 생성
  2. mybatis-config.xml 생성
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<environments default="development">
		<environment id="development">
				<dataSource type="POOLED">
					<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
					<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
					<property name="username" value="user"/>
					<property name="password" value="user"/>
				</dataSource>
		</environment>
		
	</environments>
	
	<mappers>
		<mapper resource="/user/user-mapper.xml"/> 
      	<mapper resource="/product/product-mapper.xml"/> 
	</mappers>
	
	
</configuration>
  • SQL mapper 파일은 가장먼저 XML 선언으로 시작된다.
  • 그 다음으로 태그 규칙을 정한 DTD 선언이 온다.
    • DTD를 설정하지 않으면 <ttt>도 태그가 될 수 있으므로 꼭 설정을 해 줘야 한다.
  • environments : DB 연결을 설정한다.
    • 여러개의 DB를 연결하고싶다면 하위태그인 <environment> 를 여러개 넣으면 된다. id에 설정된 값으로 구분이 가능하다.
  • dataSource type : 연결할 DB에 관한 정보를 넣는다.
    • POOLED : 처음 연결객체를 생성할 때 pool 영역에 저장한 이후 재사용 가능
    • UNPOOLED : 처음 연결객체를 별도로 저장하지 않는다. 객체 호출 시 매번 생성하여 사용한다.
  • mappers : mapper.xml 파일과 연결한다.

SqlSessionFactory 생성

package mybatis;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisConnectionTest {
	
	private static SqlSessionFactory sqlFactory = null;
		
	try {
					
		Reader reader = Resources.getResourceAsReader("mybatis/mybatis-config.xml");
		sqlFactory = new SqlSessionFctoryBuilder().build(reader)
       		
		} catch (IOException e) {
			e.printStackTrace();
		}
}		
	
	public static SqlSession getSqlSession() {
		return sqlFactory.openSession(true); // 자동커밋 활성화
	}
	return sqlFactory;
}
  • SqlSessionFactory : SqlSession을 생성하기 위해 사용
  • SqlSession : DB와 연결되는 Connection객체
  • getSqlSession : XML 파일을 DB와 연결하고, Connection 객체를 반환한다.
profile
기록하는 사람

0개의 댓글