Web/Servlet-JSP

Servlet-JSP MVC05 - mybatis 설치 및 기본설정

now0204 2023. 6. 14. 17:06

 

1. 기존 JDBC의 문제

 

 - Connection 객체 얻는 과정에서 코드 내 중요정보 노출 위험 (url정보, user, password 등) 

 - sql문과 java코드가 섞여있어서 개발을 어렵게 만들고, 유지보수가 어렵다 

  (ex sql에 테이블명이 바뀌는 경우 일일이 수정해줘야한다.)

 - 속도가 늦다 JDBC에서 Connection을 얻고 해제하는 부분이 시간이 많이 걸린다.

 

-> 이러한 JDBC 기존의 문제를 보완할 수 있는 api가 mybatis api이다.

 

2. Mybatis API (SQL Mapping Framework)

 

mybatis는 자바소스코드와 sql을 맵핑시키는 api이다.

 

- 자바 소스와 sql을 분리시키고, 이를 연결해서 사용할 수 있게 만드는 API이다.

- Connection  Pool에 미리 DB와의 Connection(SqlSession객체)를 만들어두고, sql문이 실행될 때 

대기중인 Connection객체를 사용하고, sql문 종료 후 다시 Connection객체를 돌려받아 연결과 해제에 걸리는 시간을 단축시킨다.

- JDBC 예외처리를 사용할 필요가없다.

출처: https://souning.tistory.com/15

 

3. Mybatis 설정하기 

 - mybatis.org 사이트에 가서 먼저 mybatis api를 다운받은 후 lib폴더에 mybatis 버전.jar 파일을 추가하자.

 - mybatis를 사용하기 위해서 가장 중요한 3가지 파일(config.xml, properties파일, Mapping파일)을 설정해보자.

 - 각각 3개의 파일을 만들고 properties파일과 Mapping파일을 config.xml에 연결해서 사용할 것이다.

 

3.1 config.xml 

https://mybatis.org/mybatis-3/getting-started.html

 

mybatis – MyBatis 3 | Getting started

It's very important to understand the various scopes and lifecycles classes we've discussed so far. Using them incorrectly can cause severe concurrency problems. Dependency Injection frameworks can create thread safe, transactional SqlSessions and mappers

mybatis.org

사이트에 초기 config.xml을 설정하는 양식이 있다. 이에 맞춰서 config.xml파일을 만들어보자

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="org/mybatis/example/BlogMapper.xml"/>
  </mappers>
</configuration>

3.2 properties파일 

 

- config.xml 파일에 ${driver}, ${url}, ${username} 등은 기존에 JDBC에서도 DB와 연결할 때 적어줬어야하는 부분이다.

 위 연결을 위한 정보를 properties파일로 옮겨서 적어둔 뒤에 config파일에 포함시켜 자동으로 연결정보를 얻도록 할 것이다.

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8&serverTimeZone=UTC
username= 유저이름
password= 비밀번호

driver와 url정보는 연결된 DB에서 얻을 수 있는 정보 
각각 DriverClass, Connection url이다.

*공백 혹은 스펠링에 오류가 있으면 안된다! 

 

3.3 Mapper.xml파일

 

 - sql과 자바코드사이에 Mapping정보를 담은 파일이다. 기본틀은 위에 첨부된 사이트를 통해 얻을 수 있다.

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.example.BlogMapper">
    //뭔가 적혀져있는 것은 지우고 이렇게만 남겨두자 여기 내용은 추후에 추가할 것이다. 
  
</mapper>

 

이제 2개의 파일은 config.xml에 연결하자

 

 - config와 properties연결

<configuration>
<propreties resource="패키지명을 포함한 properties파일 경로 /으로 구분"/>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
         ......
         
ex(<properties resource="kk/bis/mybatis/DB.properties"/>)

- config와 mapper파일 연결 

   먼저 mapper파일에 namespace를 변경해주자 (namespace는 Mapper파일끼리 구별해주는 역할을 한다)

 

<mapper namespace="org.mybatis.example.BlogMapper"> // 기본설정
->
<mapper namespace="일반적으로 패키지명을 포함한 맵퍼파일명, 경로는 .으로 구분">

ex (<mapper namespace="kk.bis.mybatis.MemberMapper">)

 

config.xml하단에 mapper태그에 리소스 변경해주자 

    </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="패키지명을 포함한 Mapper파일의 위치 및 확장자명, 경로는 /로 구분"/>
  </mappers>
</configuration>

 

이제 모든 기본설정이 완료되었다.

 

추후 mybatis를 사용하면,

1. config.xml을 읽으면서 이에 포함된 properties와 연동하여 DB와 연결하여

    Connection Pool을 미리 만들어 두고 

2. 이후 트랜잭션을 실행할 때 Connection Pool에 Connection을 얻고 Mapper파일을 참고하여  sql문이 동작한다.

  

 

 

 

 

참고자료: 나프2탄(인프런) 박매일 

https://www.inflearn.com/course/%EB%82%98%ED%94%84-mvc-2

 

[NarP Series] MVC 프레임워크는 내 손에 [나프2탄] - 인프런 | 강의

본 과정은 WEB MVC 프레임워크가 무엇이고 WEB MVC 프레임워크가 어떻게 변형이 되면서 Spring WEB MVC 프레임워크로 넘어가는지 TPC(생각하고-표현하고-코딩하고) 기법을 통해 단계적으로 학습하고 이

www.inflearn.com

https://souning.tistory.com/15

 

ORM : MyBatis연동

MyBatis 연동을 하기 위해서는 Connection Pool, MyBatis, Ojdbc6.jar을 준비해야하는데 여기서 Connection Pool이란 ORM: Object Relational Mapping Framework, 객체 관계 맵핑 프레임워크 -간편한 트랜잭션과 일관된 설정

souning.tistory.com