MyBatis

SangWoo·2022년 5월 11일
0

MyBatis

목록 보기
1/1

MyBatis란?


//pom.xml
<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.5.9</version>
</dependency>
//pom.xml
<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>2.0.7</version>
</dependency>

MyBatis-JDBC의 차이

JDBC를 이용한 Programming

String sql = "SELECT * FROM user_info WHERE id= ? ";

        try (
            Connection conn = ds.getConnection();
            PreparedStatement pstmt = conn.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery(); //  select
        ){
            pstmt.setString(1, id);

            if (rs.next()) {
                user = new User();
                user.setId(rs.getString(1));
                user.setPwd(rs.getString(2));
                user.setName(rs.getString(3));
                user.setEmail(rs.getString(4));
                user.setBirth(new Date(rs.getDate(5).getTime()));
                user.setSns(rs.getString(6));
                user.setReg_date(new Date(rs.getTimestamp(7).getTime()));
            }
        }
  • 클래스안에 SQL문을 직접 작성하는 방식은 SQL의 변경 등이 발생할 경우 매번 프로그램을 수정과 컴파일을 해야합니다.
  • 하나의 SQL문 마다 DriverManager로부터 Connection을 받아오기 때문에 중복 코드가 많이 발생하고 Java코드와 SQL문이 복잡하게 섞여 있어 가독성이 떨어집니다.
    (try ~cath ~finally를 이용하는 처리부터 PreparedStatement와 ResultSet의 처리까지 많은 코드를 직접 작성해야한다.)

MyBatis를 이용한 Programming

//Mapper.xml
<delete id="deleteUser" parameterType="String">
		delete from user_info
		where id = #{id}
</delete>
//DAO.class
public int deleteUser(String id) throws Exception {
		return session.delete(namespace+"deleteUser", id);
}
  • SQL문과 Java코드의 분리로 SQL문을 수정해도 새로 컴파일 하지 않아도 됩니다.
  • Database에 연결하는 작업을 캡슐화하고 중복코드의 제거로 간결성 및 생산성과 유지보수가 향상됩니다.

MyBatis의 구조와 구성

  • MyBatis는 DAO와 JDBC 사이에 위치하여 서로를 매핑해줍니다.

  • MyBatis Configuration File
    Database의 연결, 매핑 경로, 작업 설정과 같은 세부 사항을 설명하는 파일


MyBatis 제공

  • SqlSessionFactory
    SqlSession을 생성하는 요소

  • SqlSession
    SQL 실행 및 트랜잭션 제어를 위한 요소
    MyBatis를 사용하여 Database에 Access할때 가장 중요한 역할을 하는 요소

MyBatis-Spring 제공

  • SqlSessionFactoryBean
    SqlSessionFactory를 Spring에서 사용하기 위한 Bean
//root-context.xml
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
        <property name="configLocation"  value="classpath:mybatis-config.xml"/>
		<property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
</bean>
  • SqlSessionTemplate
    SQL명령을 수행하는데 필요한 메서드 제공
//root-context.xml
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
		<constructor-arg ref="sqlSessionFactory"/>
</bean>

0개의 댓글