[Spring] MyBatis

SHINYEJI·2023년 10월 25일
0

Back-End

목록 보기
6/24

참고 - MyBatis 공식문서

📌 MyBatis

  • Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 SQL Mapping 프레임워크다.

  • SQL을 별도의 파일(xml)로 분리해서 관리한다.

  • Object와 SQL 사이의 parameter mapping 작업을 자동으로 해준다.

  • Hibernate나 JPA(Java Persistence API)처럼 새로운 DB 프로그래밍 패러다임을 익혀야 하는 부담 없이 SQL을 그대로 이용하면서 JDBC 코드 작성의 불편함을 제거해주고, 도메인 객체나 VO 객체를 중심으로 개발이 가능하다.

  • 즉, 데이터 베이스 연결을 아파치 톰캣이 한다.

    👀MyBatis 는 JDBC 코드와 수동으로 셋팅하는 파라미터와 결과 매핑을 제거한다.
    DAO 구현체 대신 myBatis 프레임워크를 이용해 DBMS connection 및 query를 실행한다.

    SQL Mapping(MyBatis) VS ORM Framework(JPA)

    • SQL Mapping은 객체(class)를 테이블과 매핑하지 않고 쿼리문과 매핑한다.
      • 쿼리문 직접 작성해야한다.
      • RDB에 종속적이다. - DB에 따라 다르게 쿼리문을 작성해야 한다.
      • 쿼리문을 작성하기에 자유롭다.
    • ORM Framework은 객체와 테이블을 매핑한다.
      • 쿼리문을 개발자가 직접 작성하지 않고 method를 이용하여 쿼리한다.
      • RDB에 종속적이지 않다. - 메소드를 사용하기 때문에 DBMS에 따라 쿼리문을 다르게 짜지 않아도 된다.
      • 그러나, 복잡한 쿼리문을 사용하기 힘들다.




자바에서 시작하기

  • mybatis 라이브러리 사용
  	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.13</version>
	</dependency>
  • resource에는 설정파일의 경로를 넣어주면된다.

NameSpace

호출해야 되는 인터페이스 이름까지를 namespace로 하여 중복되지 반드시 중복되지 않게 해야한다.




매퍼 설정 XML

  • mybatis 설정 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="설정파일이 있는 곳"/>
	
	<!-- 별칭 설정 -->
	<typeAliases>
	    <!-- 별칭으로 설정하면 sql작성한 xml에서 별칭으로 사용할 수 있다 -->
		<typeAlias type="Dto가 있는 곳" alias="별칭" />
	</typeAliases>
	
	
	<!-- DB연결  -->
	<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="실제 쿼리문을 사용한 xml파일" />
	</mappers>
	
</configuration>

외부 설정 .xml

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/테이블 // 옵션 : ?serverTimezone=UTC&useUniCode=yes&characterEncoding=UTF-8
username=
password=

별칭 - 자바에 내장된 타입


0개의 댓글