1. MyBatis란?
MyBatis는 개발자가 지정한 SQL, 저장프로시저 그리고 몇 가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다.
MyBatis는 JDBC코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거한다.
MyBatis는 데이터베이스 레코드에 원시타입과 Map인터페이스 그리고 자바 POJO를 설정하고 매핑하기 위해 XML과 애노테이션을 사용할 수 있다.
지금까지 우리는 CMD를 활용하여 sqlplus를 통해 DB를 관리하거나 SQL Developer를 통해 DB를 관리했다.
하지만 MyBatis를 활용하면 자바 안에서 DB에 대한 접근이 가능하다.
이러한 접근 방식을 ORM 방식이라고 부른다.
이 SQL문을 MyBatis에서 사용하기 위해선 .xml 파일에서 sql문을 작성하게 된다.
그리고 이것을 인식시키기 위한 여러 설정들이 필요하다.
이 설정들은 어노테이션을 중심으로 이루어진다.
2. 환경 설정을 위해 알아둘 개념들
이 환경설정은 정부표준프레임워크를 따르려한다.
우선 MyBatis 3 버전 이전에는 iBatis라 불렸기 때문에 두 단어가 혼용될 수 있음을 알아두면 좋다.
MyBatis Mapper XML (SQL Mapping XML) File은 실행할 SQL문을 정의해놓은 파일로서,
SQL문 실행을 위해 Parameter Object를 받아오거나 SQL문 실행 결과를 Result Obejct에 자동 바인딩하는 기능 등을 제공한다.
다음은 MyBatis Mapper XML File에서 사용할 수 있는 요소와 속성에 관한 설명이다.
Mapper XML (SQL Mapping XML) : Mapper XML File에는 다음과 같은 요소들을 사용할 수 있다.
-
<select> : 매핑된 SELECT 구문
-
<insert> : 매핑된 INSERT 구문
-
<update> : 매핑된 UPDATE 구문
-
<delete> : 매핑된 DELETE 구문
-
<sql> : 다른 구문에서 재사용하기 위한 SQL 조각
-
<resultMap> : 데이터베이스 결과 데이터를 객체에 매핑하는 방법을 정의
-
<cache> : 자신의 namespace를 위한 캐시설정
-
<cache-ref> : 다른 namespace의 캐시설정을 참조
2) Dynamic SQL
또한 위의 사이트를 들어가보면 MyBatis에서 Sql문을 더 역동적으로 사용할 수 있는 다양한 조건문 사용방법들이 나와있다.
3) 자바 API
https://mybatis.org/mybatis-3/ko/index.html
3. 환경 설정하기
1) 다운로드 받기
우선 마이바티스를 홈페이지에서 다운받았다.
이후 마이바티스를 연습하기 위해 프로젝트를 하나 만든 후 라이브러리를 추가해주었다(의존성을 주입하는 방식도 당연히 있다).
2) SQL 파일과 XML 파일 만들기
이번에는 프레임워크가 아니라 마이바티스를 jsp 방식으로 사용하는 법을 배우려한다.
우선 config라는 폴더와 net.mem 패키지를 생성해주었다.
그리고 테이블과 시퀀스를 생성하는 sql 파일을 만들었다.
-- 테이블 생성
create table mem(
num number,
name varchar2(20),
age number
);
-- 시퀀스 생성
create sequence mem_seq;
commit;
그리고 xml 파일을 만들었다.
데이터베이스 연결을 위한 jdbc.xml과 mem.xml(대부분 테이블 이름을 따라간다).
xml파일을 열면 디자인 모드와 소스모드가 있는데 우린 거의 소스 모드에서 접근을 하려 한다.
3. 주요 파일 생성하기(xml, class)
1) jdbc.xml 환경설정 파일 만들기
이 파일은 우선 전자정부표준프레임워크에서 제공하는 Sample Configuration을 따른다.
<?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>
<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>
이것을 바탕으로 수정을 하려 한다.
여기서 구현되는 것은 JSP에서 DBOpen 클래스와 DAO 클래스가 통합된 형태의 프로그래밍 코드이다.
물론 스프링 프레임워크를 사용하면 이 과정 또한 더더욱 간소화가 될 수 있지만 그것은 먼저 기초를 배운 후에 배워보자.
이제 수정해보자.
<property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521/xe"/>
<property name="username" value="system"/>
<property name="password" value="1234"/>
그리고 이후의 CRUD 작업을 할 mapper 공간을 xml파일과 연결해준다.
<mappers>
<mapper resource="config/mem.xml"/>
</mappers>
2) mem.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">
<mapper namespace="egovframework.rte.psl.dataaccess.DeptMapper">
<select id="selectDept"
parameterType="int"
resultType="Dept">
<![CDATA[
select *
from DEPT
where DEPT_NO = #{deptNo}
]]>
</select>
</mapper>
mem.xml도 전자정부표준프레임워크에서 제공하는 위의 예시 코드를 사용하여 작성하려 한다.
맵퍼엔 이름이 필요하며 테이블이름과 동일하게 해준다.
우선 jdbc.xml 파일에 클래스에 대한 별칭을 부여해준다.
<!-- 클래스에 대한 별칭 부여 -->
<typeAliases>
<typeAlias type="net.mem.MemDTO" alias="memDTO"/>
</typeAliases>
이후에 mem.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">
<!-- mem.xml -->
<!-- 실행할 sql문을 정의해놓은 파일(DAO클래스) -->
<!-- 종결문자 사용금지 -->
<mapper namespace="mem">
<!-- ? 기호를 대신하는 파라미터 바인딩 표기법 #{property} -->
<insert id="insertROW" parameterType="memDTO">
INSERT INTO mem(num, name, age)
VALUES (mem_seq.nextval, #{name}, #{age})
</insert>
</mapper>
3) MemDTO.java
다음은 늘 만들던 DTO이다.
코드는 생략
4) MemMainTest.java
이 파일이 중요하다.
이 클래스에서는 factory를 활용하여 DB 연결을 위한 환경 설정 파일을 가져와서 factory bean, 즉 객체를 생성해주는 과정을 함으로 DB 서버에 연결을 한다.
이후에 쿼리문을 생성 및 변환을 한 뒤 실행을 시키는 흐름으로 코드를 짠다.
여기서 쓰이는 객체들은 ibatis 에서 상속되는지 확인해야한다.
이곳에서 CRUD 작업을 진행하는 것은 다음 게시물로!
'⁂ MyBatis Framework > : 기본 익히기' 카테고리의 다른 글
[MyBatis3] #4-3 파일 업로드 및 댓글 게시판 만들기 : 상품 목록 페이지 (0) | 2022.11.11 |
---|---|
[MyBatis3] #4-2 파일 업로드 및 댓글 게시판 만들기 : 첫 페이지 만들기 (0) | 2022.11.10 |
[MyBatis3] #4-1 Spring Boot + MyBatis Framework 기반 파일 업로드 및 댓글 게시판 만들기 : 환경설정 (0) | 2022.11.10 |
[MyBatis3] #3 의존성 주입(POJO방식과 Bean방식) (0) | 2022.11.09 |
[MyBatis3] #2 - CRUD (0) | 2022.11.09 |