위로
아래
myBatis
마이바티스
- 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 쉽게 도와주는 프레임워크.
- SQL문을 별고의 파일로 분리해서 관리할 수 있도록 해준다 (더 이상 DAO가 직접 일을 안 해도 된다)
- 스프링이 다루는 컨트롤러, 서비스, 레파지토리(DAO) 중, 레파지토리를 마이바티스에게 위임시킨다.
- 마이바티스의 역할 : sql 관리, 파라미터 대입, 실행, 결과 매핑해서 서비스 영역으로 전달
- 마이바티스는 JDBC를 보다 편하게 사용하기 위해 개발
- JDBC : 자바에서 관계형 데이터베이스와 연결하여 데이터를 주고 받을 수 있게 제공되는 인터페이스
- DriverClass, Connection, PreparedStatement, ResultSet 등 API를 제공하지만, 각각 기능을 사용하기 위해서는 관련 객체를 생성하고 해제해야하는 단점이 있다.
마이바티스 API
SqlSessionFactoryBuilder
- SqlSessionFactoryBuilder 생성
SqlSessionFactory
- myBatis의 전역 정보를 가지고 실행을 제어
- SqlSession 생성
- 애플리케이션당 하나만 생성하는 것을 권장
SqlSession
- 쿼리 실행 처리.
세팅
pom.xml에 종속성 추가
<!-- pom.xml -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.0</version>
</dependency>
datasource-context.xml에 SqlSession 설정
<?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 https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- database setting -->
<bean id="dataSourceOR" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/board"/>
<property name="username" value="root"/>
<property name="password" value="70657065"/>
</bean>
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
<constructor-arg ref="dataSourceOR"/>
<property name="logFormatter">
<bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
<property name="loggingType" value="MULTI_LINE"/>
<property name="sqlPrefix" value="[SQL]: "/>
</bean>
</property>
</bean>
<!-- db connection info. -->
<!-- 1.mybatis f/w db connect 2. sql file location setting-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath*:**/mybatisConfig/Mybatis-Config.xml" />
<property name="mapperLocations" value="classpath*:**/mapper/*Mapper.xml" />
</bean>
<!-- use DAO -->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
</beans>
Mybatis-Config.xml에 별칭 설정
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "HTTP://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="false" />
<setting name="useGeneratedKeys" value="true" />
<setting name="defaultExecutorType" value="REUSE" />
<setting name="jdbcTypeForNull" value="NULL" />
</settings>
<!-- aliaes - short name setting bvo, pvo-->
<typeAliases>
<typeAlias alias="hashMap" type="java.util.HashMap" />
<typeAlias alias="map" type="java.util.Map" />
<typeAlias alias="bvo" type="com.ecom4.hi.board.model.BoardDTO" />
</typeAliases>
</configuration>