위로 아래

myBatis

마이바티스

  1. 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 쉽게 도와주는 프레임워크.
  2. SQL문을 별고의 파일로 분리해서 관리할 수 있도록 해준다 (더 이상 DAO가 직접 일을 안 해도 된다)
  3. 스프링이 다루는 컨트롤러, 서비스, 레파지토리(DAO) 중, 레파지토리를 마이바티스에게 위임시킨다.
  4. 마이바티스의 역할 : sql 관리, 파라미터 대입, 실행, 결과 매핑해서 서비스 영역으로 전달
  5. 마이바티스는 JDBC를 보다 편하게 사용하기 위해 개발
    1. JDBC : 자바에서 관계형 데이터베이스와 연결하여 데이터를 주고 받을 수 있게 제공되는 인터페이스
    2. DriverClass, Connection, PreparedStatement, ResultSet 등 API를 제공하지만, 각각 기능을 사용하기 위해서는 관련 객체를 생성하고 해제해야하는 단점이 있다.

 

 


마이바티스 API

SqlSessionFactoryBuilder

  1. SqlSessionFactoryBuilder 생성

 

SqlSessionFactory

  1. myBatis의 전역 정보를 가지고 실행을 제어
  2. SqlSession 생성
  3. 애플리케이션당 하나만 생성하는 것을 권장

 

SqlSession

  1. 쿼리 실행 처리.

 

 

 


세팅

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>