본문 바로가기

SPRING/Configuration

Eclipse & Oracle 연결 - mybatis 설정

* 스프링과 mybatis의 관계

스프링은 웹 애플리케이션만을 만들기 위한 프레임워크가 아니라 웹을 만들기 위한 하나의 방법일 뿐

스프링으로 구현할 수 있는 건 웹 말고도 너무 많은데 그중에 웹에 사용해도 좋네? 해서 사용하게 된 것

mybatis도 마찬가지로 스프링을 위해 만들어진 건 아니고 단지 스프링과 같이 써보니까 좋아서 쓰는 거임

 

Controller - Service - DAO 인터페이스 - mybatis Mapper ------------------- DB (어떤 DB던지 가능)

                                                                                             mybatis-spring

즉, 결합도가 낮아지는데 도움을 준다. 대신 응집도는 높아진다.

 

 

* mybatis

- SQL 매핑 프레임워크의 한 종류

- 스프링과 연동하여 좀 더 빠르게 SQL을 처리할 수 있게해줌

- mybatis-spring 라이브러리를 통해 스프링과 연동 가능

- mybatis를 통해 DB에 접근 가능

- 쉽게 말해, JDBC처럼 스프링과 DB와의 연결을 도와주는 프레임워크

 


* mybatis 설정

 

1) 스프링과 mybatis 설정

- pom.xml에 의존성 추가

- 아마도 mvn 레파지토리에서 가져오는건가? 일단 그냥 복사해서 쓰자. 나중에 꼭 알아보기.

- 스프링과 mybatis를 연결해줄 mybatis-spring 셋팅

 

더보기

 

<!-- Mybatis -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>3.4.3</version>

</dependency>

<!-- Mybatis-spring -->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.3.1</version>

</dependency>

 

2) SqlSessionFactory 객체 bean-container에 추가

- jdbc에서 jdbcTemplate 객체를 이용해서 DB에 쿼리문을 날려줄 수 있었듯이

  mybatis에서는 SqlSessionFactory 객체를 이용해 DB에 쿼리문을 날림

- root-context.xml (혹은 빈 컨테이너를 담당하는 xml파일)에 작성

 

더보기

 

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

<property name="dataSource" ref="dataSource" />
<property name="mapperLocations" value="classpath:매퍼xml파일의 경로"/>

</bean>

 

 

3) mybatis 구현 파일을 bean-container에 넣을 수 있도록 스캔 설정

- 2번에서 작성한 코드 바로 아래에 작성

- 일단, root-context.xml 파일에 (다른 플젝에서는 이름이 다를수도, 빈 객체들을 관리하는 곳=빈 컨테이너에 넣으면 됩니다)

   namespace에서, mybatis-spring 체크 (상단 이미지에서 추가된 것을 알 수 있음)

- xml 파일을 인식할 수 있도록 스캔 해주는 것

- base-package 에는 DAO 인터페이스가 있는 패키지 경로를 적어줌, 실제로 xml 파일도 여기에 들어있을 예정

 

더보기

 

<!-- mybatis 구현 xml파일을 스캔할 수 있도록 경로 지정 -->

<mybatis-spring:scan base-package="인터페이스가 있는 패키지 경로"/>

 

4) Mapper XML 파일 설정

- 일반적으로 repository(DAO) 인터페이스가 있는 경로에 만들어줌

- jdbc에서 java 클래스 파일에 작성하던 DAO를 mybatis를 이용하면 xml 파일에 더 간단하게 작성 가능

- 같은 경로에 있는 인터페이스 IEmpDAO를 구현하는 파일 = jdbc에서 IEmpDAO 인터페이스를 구현한 EmpDAO 클래스와 동일한 역할

- xml 파일은 객체가 필요 없다 -> Service 단에서 인터페이스에 @Autowired가 걸려있기 때문에 정상적으로 진행되는 것!

 

더보기

 

<?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="repository(DAO)에 해당하는 인터페이스 파일 경로">

 

// 여기에 sql문 입력

 

</mapper>