Mybatis Guide
- JDBC를 모른다면, 아래 링크를 보고와주세요.
https://moo-on.github.io/java/JDBC-Start-Guide/
Mybatis란?
DB access을 더 쉽게 도와주는 개발 프레임워크이다.
JDBC로 DB에 access에 하는 작업을 캡슐화하며, 일반SQL쿼리, 저장프로시져 및 고급 매핑을 지원하며 모든 JDBC코드 및 매개변수의 중복 작업을 제거합니다.
디자인적으로도 SQL쿼리들을 분리해 한 곳에 모아두어 분리 시킬 수 있습니다.
JDBC의 단점(중요코드 노출, 개발속도, 자바소스&SQL소스 혼합)을 극복.
기본 환경 구성 & 사용법
- 기본 모듈이 아니기에, Mybatis jar파일을 다운로드 후에 lib폴더 안에 넣어줘야 한다.
Mybatis를 사용하려면 위에 보이는 3가지 파일이 존재해야한다.
- configuration XML : 환경파일 구성 2,3번 파일을 1번 파일에 연결 시켜야 함.
-
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> <properties resource = "com/web/mybatis/db.properties"/> <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="com/web/mybatis/memberMapper.xml"/> </mappers> </configuration>
- properties resource 재설정
- properties파일 과 키값이 일치해야함(jdbc 연결 post 참조)
- mapper resource 재설정
-
- properties 파일
-
db.properties코드
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test username=root password=1234
-
- SQL 문장을 저장해놓은(Mapper파일, XML)
-
Mapper.xml
<?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"> <!--namespace는 맘대로 중복파일 방지용, but 일반적으로 폴더위치명 --> <mapper namespace="com.web.mybatis.memberMapper SQL구문이 들어감 </mapper>
-
mybatis api가 1번 xml파일을 읽고 작동을 한다.
SqlSessionFactory란?
- JDBC를 모른다면, 아래 링크를 보고와주세요.
https://moo-on.github.io/java/JDBC-Start-Guide/
JDBC의 경우 DB와 access할 경우 connection객체의 생성과 작업 완료 후 닫어주는 방법으로 매번 연결 객체 생성과 종료가 반복된다. 이로 인해 리소스가 많이 들어가게 된다.
link참고
Mybatis의 경우
- SqlSessionFactory를 만들어준 후 이 안에 Sqlsession 5-8개를 생성을 해준다.
- 각각의 sqlsession은 DB와의 연결을 끊지 않고 연결이 필요한 메소드마다 session을 하나씩 가져가서 사용 후 반납을 한다. 기존에 DB와 연결하고 끊고를 하면서 사용했던 리소스가 줄어든다.
소스코드를 통해서 어떻게 사용되는지 확인하고싶다면 아래 링크를 참고하세요.
factory생성_link참고
https://github.com/moo-on/jsp-tutorial/blob/master/src/com/web/model/MemberDAO.java
SQLmapping_link참고
https://github.com/moo-on/jsp-tutorial/blob/master/src/com/web/mybatis/MemberMapper.xml
[reference]
Leave a comment