Mybatis, mybatis-config 설정하기

oYJo·2025년 3월 12일

Spring

목록 보기
5/29

Mybatis의 개념 및 흐름

1️⃣ Mybatis

Mybatis 란 ??

데이터의 입력, 조회, 수정, 삭제(CRUD)를 보다 편하게 하기 위해 xml로 구조화한 Mapper 설정 파일을 통해서 JDBC를 구현한 영속성 프레임워크

기존에 JDBC를 통해 구현했던 상당 부분의 코드와 파라미터 설정 및 결과 매핑을 xml 설정을 통해 쉽게 구현할 수 있게 해준다.

쉽게 말해서, JDBC와 비슷하다

xml로 구조화한 Mapper 설정 파일을 통해 JDBC를 구현한 영속성 프레임워크

<DOCTYPE ~~~Mapper.dtd> Mapper로 쉽게 한다

Mybatis API 사이트

http://www.mybatis.org/mybatis-3/ko

Mybatis의 흐름

이전에 JDBC Template을 통해 SQL을 실행하였다면 Mybatis는 해당 흐름을 전용 라이브러리를 통해 대체하여 동작한다고 생각하면 된다.

Mybatis는 해당 흐름을 전용 라이브러리를 통해 대체해서 동작
DAO에서는 코드가 짧아짐 = JDBC 프레임워크이기에 Mybatis 설정 파일에 다 적혀 있기 때문에 이것들도 lib이 아닌 pom에 넣어서 붙여주면 된다

✔️pom.xml

<!-- 스프링에서 JDBC를 사용할 수 있게 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>${org.springframework-version}</version>
  <!-- 위 properties의 지정한 Spring 버전을 따라감 -->
</dependency>

<!-- Mybatis 영속성 프레임워크  -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.9</version>
</dependency>

<!-- Spring - Mybatis 연결 모듈, 연결 역할을 하는 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.6</version>
</dependency>

<!-- 커넥션 풀 기능을 사용하기 위한 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2 -->
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-dbcp2</artifactId>
  <version>2.9.0</version>
</dependency>

  1. Mybatis 영속성 프레임워크 가져오기
  2. Spring Mybatis 연결 모듈, 연결 역할 하는 라이브러리
  3. 커넥션 풀 기능 사용 라이브러리 : 더이상 그때그때 커넥션 풀 만들어서 사용하지 않음


설치가 잘 되면 Maven Dependencies에 mybatis가 추가되어 있다


2️⃣ JDBC, Spring, Mybatis 관련 모듈,라이브러리 추가


3️⃣ Mybatis - 참고

ibatis와 Mybatis

기존에 Apache project에서 ibatis를 운영하던 팀이 2010년 5월 9일에 Google 팀으로 이동하면서 Mybatis로 이름을 바꿈

Mybatis는 기존의 ibatis의 한계점이였던 동적 쿼리와 어노테이션 처리를 보강하여 더 나은 기능을 제공

반대로 ibatis는 현재 비활성화 상태이며, 기존에 ibatis로 만들어진 애플리케이션의 지원을 위해 라이브러리만을 제공하고 있음

ibatis와 Mybatis의 차이점


mybatis-config설정하기

1️⃣ Mybatis의 동작 구조

  • 위의 사용 객체들은 mybatis 관련 라이브러리에 존재함

atis vs Mybatis
ibatis가 더 옛날이다

Mybatis
원래 DB랑 연결하기 위해선
1. service에서 Connection 사용
이걸 DataSource(Connection 상위버전)+ Mybatis + 트랜잭션 자동으로 제어 + close 자동으로 제어
⇒ SqlSession Template안에 다 들어가 있음
탬플릿처럼 쉽게 쉽게 쓰기 위해서 한번 만들어둔 것

근데 앞에 SqlSession Factory Bean이란 게 있음
공장(SqlSession Factory)에서 제품을 만들고 → 나온 제품(SqlSession Template)을 이용


2️⃣ mybatis-config 설정하기

Mybatis 설정용 xml 파일 DTD(Document Type Definition) 추가

Window - Preferences - XML - XML Catalog - User Specified Entries클릭– Add… 클릭

mybatis-config.xml 생성

‘src/main/resources’폴더에 mybatis-config.xml 파일 생성

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>
  <!-- SqlSessionTemplate 생성 시 적용될 설정 작성 부분-->
  <settings>
    <!-- insert 또는 update에 사용되는 값 중 null이 있을 경우에 대한 설정
해당 설정이 없을 경우-> SQL 구문에 null 포함되어 있다는 오류 발생.
해상 설정이 있을 경우-> 오류를 발생 시키지 않고 NULL 값을 컬럼에 대입
단, NOT NULL 제약조건이 없는 컬럼에만 가능함.
** value 설정 시 NULL 은 반드시 대문자로 작성 (소문자 null은 오류가 발생함) -->
    <setting name=
             " jdbcTypeForNull" value="NULL" />
  </settings>
  <!-- 별칭 작성 부분-->
  <!-- VO클래스의 패키지명 + 클래스명 작성하는 것이 불편하기 때문에 짧은 별칭 부여-->
  <typeAliases>
    <typeAlias type=
               " edu.kh.fin.member.model.vo.Member" alias="Member" />
  </typeAliases>
  <!-- mapper 파일(SQL 작성되는파일) 위치 등록 부분-->
  <mappers>
  </mappers>
  <mapper resource="/mappers/member-mapper.xml" />
</configuration>
profile
Hello! My Name is oYJo

0개의 댓글