-
Servlet-JSP MVC05 - mybatis 설치 및 기본설정Web/Servlet-JSP 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 예외처리를 사용할 필요가없다.
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
사이트에 초기 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
https://souning.tistory.com/15
'Web > Servlet-JSP' 카테고리의 다른 글
Servlet-JSP MVC04(1) - FrontController and POJO (0) 2023.06.16 Servlet-JSP MVC05 - JDBC to Mybatis (0) 2023.06.14 Servlet - JSP MVC03 - JSTL and EL (1) 2023.06.13 Servlet-JSP MVC03 (1) - forward and Redirect (0) 2023.06.13 Servlet-JSP MVC02(4) - Application,Session,Cookie (0) 2023.06.12