마이바티스란(Mybatis) ?
마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크입니다. 마이바티스는 JDBC로 처리하는 상당 부분의 코드와 파라미터 설정및 결과 매핑을 대신해주고, 데이터베이스 레코드에 원시타입과 Map 인터페이스 그리고 자바 POJO 를 설정해서 매핑하기 위해 XML과 어노테이션을 사용할 수 있게 해줍니다.
상기 내용은 Mybatis 홈페이지에서 긁어온 내용인데 이해하기가 어렵습니다. 간단하게 요약하면 객체지향 어플리케이션에서 관계형 데이터베이스의 연결을 쉽고 간결하게 처리하여 개발할 수 있도록 도와주는 프레임워크라고 말할 수 있겠네요.
이는 복잡한 JDBC 연결 코드를 걷어내어 생산성을 향상시켜주고, SQL과 어플리케이션 소스를 분리 시켜 유지보수성을 향상시켜줍니다. 엄청난 장점들이네요.^^
마이바티스(Mybatis) 연동
필요 dependency는
1. Mybatis 라이브러리
2. Mybatis-Spring : Mybatis 와 Spring Framework 연동해주는 라이브러리
3. commons-dbcp : 자카르타 라이브러리로 Db컨넥션 풀을 관리해주는 라이브러리
4. ojdbc : 오라클 db 연동해주는 라이브러리
5. spring-jdbc : spring에서 db 컨넥션사용하기 위한 라이브러리
먼저 호환 가능한 버전을 확인해주고
MyBatis-Spring |
MyBatis |
Spring |
1.0.0 and 1.0.1 |
3.0.1 to 3.0.5 |
3.0.0 or higher |
1.0.2 |
3.0.6 |
3.0.0 or higher |
1.1.0 or higher |
3.1.0 or higher |
3.0.0 or higher |
1.3.0 or higher |
3.4.0 or higher |
3.0.0 or higher |
1. pom.xml 해당 dependency를 추가합니다.
1. Mybatis
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
2. Mybatis-Spring
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
3. MySQL connector-java
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency>
4. commons-dbcp
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
5. spring-jdbc
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
2. web.xml에 추가.
<web-app> 태그 안에 해당 소스를 추가합니다.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:config/mappers/*-context.xml
</param-value>
</context-param>
3. mapper.xml 추가
src/main/resources에 config > mappers 디렉토리를 만들고 mappers 폴더에
mapper-context.xml, db-context.xml, test_SQL.xml 을 생성해줍니다.
mapper-context.xml▼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath*:/config/mappers/**/*_SQL.xml" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
</beans>
db-context.xml▼
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd">
<!-- MySQL 연결 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://주소/스키마"/>
<property name="username" value="계정"/>
<property name="password" value="비밀번호"/>
</bean>
</beans>
test_SQL.xml▼
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.tester.seviceimpl.TestDAO">
<select id="testSql" parameterType="string" resultType="string">
select 'OK' as Mybatis_Test from dual
</select>
</mapper>
여기까지 추가하셨다면 기본적인 준비는 끝났습니다.
다음 장에서는 Controller에서 쿼리를 찍어보도록 하겠습니다.