* 스프링과 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>
'SPRING > Configuration' 카테고리의 다른 글
메이븐 라이브러리 에러 (0) | 2020.09.23 |
---|---|
게시판 - 프로젝트 환경설정 및 DB 연결 (0) | 2020.09.07 |
[스프링] Eclipse & Oracle 연결 - JDBC 설정 (0) | 2020.08.29 |
[스프링] 한글 인코딩 필터 설정 (0) | 2020.08.27 |
[스프링] legacy 프로젝트 환경설정 (0) | 2020.08.22 |