Spring - MyBatis 연동

hiyayeah·2022년 12월 30일
0

MVC_Model1 -> Spring_MVC

목록 보기
4/12

1. MyBatis(마이바티스) 란?

  • JDBC를 대체하는 SQL 매핑 프레임워크
  • SQL을 기반으로 DB 와 자바 등의 언어를 연결시켜주는 역할
  • 소스 코드에서 SQL 문장을 분리하여 별도의 XML 파일로 작성한 후 소스 코드와 연결
    => SQL 구문 실행에 필요한 코드의 복잡한 구조를 단순화하는데 사용되는 프레임워크
  • 원래 아파치 재단의 iBatis 에서 출발하여 구글에서 새로 개발한 프레임워크가 MyBatis
  • 장점
    - 자동 Connection 객체 close
    - 내부적으로 PreparedStatement 객체 사용한 처리(자동)
    - 리턴 타입 지정을 통해 자동으로 해당 타입의 객체 생성 및 ResultSet 객체 등에 대한 처리
    - 파라미터 지정을 통해 SQL 구문에서 사용할 데이터의 전달을 처리

2. .xml 세팅

2-1. pom.xml

<!-- MySQL - JDBC 연동에 필요한 라이브러리 추가 -->		
<!-- 1. JDBC 연동에 필요한 기능을 제공하는 spring-jdbc 라이브러리(기존 스프링버전 사용) -->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>${org.springframework-version}</version>
</dependency>
		
<!-- 2. MySQL-Connector 추가 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.29</version>
</dependency>

<!-- 3. HikariCP 라이브러리(Tomcat DBCP 대용으로 사용 가능한 커넥션 풀) -->
<!-- Tomcat DBCP 에 비해 가볍고, 빠르고, 안정적인 처리가 가능한 라이브러리 -->
<!-- mvcrepository.com 대신 https://github.com/brettwooldridge/HikariCP 링크 접속 -->
<!-- Java 8 maven artifact (maintenance mode) 항목 사용 -->
<dependency>
	<groupId>com.zaxxer</groupId>
	<artifactId>HikariCP</artifactId>
   	<version>4.0.3</version>
</dependency>		

<!-- 4. MyBatis 활용에 필요한 라이브러리 추가 -->
<!-- 4-1) MyBatis 기본 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.11</version>
</dependency>

<!-- 4-2) MyBatis - Spring 연동 라이브러리 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>

2-2. root-context.xml

파일을 연 후 아래쪽 탭 중 Namespaces 탭 클릭하여 context, mybatis-spring 체크

<!-- Root Context: defines shared resources visible to all other web components -->
<!-- HikariCP 라이브러리 사용을 위한 설정 -->
<!-- 1. HikariCP 를 활용한 DB 접속 정보 설정을 위해 HikariConfig 객체 설정(JDBC 기본 설정) -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
	<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
	<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/ooo"></property>
	<property name="username" value="root"></property>
	<property name="password" value="1234"></property>
</bean>

<!-- 2. HikariCP 의 DataSource 객체 생성을 위해 HikariConfig 객체 전달 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
	<constructor-arg ref="hikariConfig"></constructor-arg>		
</bean>

<!-- Connection 객체 생성 및 쿼리 전달, 결과 리턴 등의 작업 수행할 SQLSessionFactory 객체 설정 -->
<!-- MyBatis - Spring 연결 담당하며, 내부적으로 SQLSession 객체를 통해 작업 수행 -->	
<!-- 주의! 이전에 이미 DataSource 객체 설정이 완료되어 있어야 함 -->
<!-- 주의! Mapper.xml 파일 생성 시 src/main/resource 내의 패키지에 파일 생성! (폴더 아님) -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
	<property name="mapperLocations" value="classpath:/com/ksh/ooo/mapper/*Mapper.xml"></property>
</bean>

<!-- MyBatis 연동에 사용될 객체들의 패키지 위치 지정(기본 루트 패키지 지정) -->
<mybatis-spring:scan base-package="com.ksh.ooo"/>

<beans> 태그 내에 위와 같이 설정

2-3. servlet-context.xml

	<!-- 컨트롤러(@Controller) 를 비롯한 어노테이션을 통해 자동 주입될 클래스가 포함되는 패키지 지정 -->
	<context:component-scan base-package="com.ksh.ooo" />
<!-- 	<context:component-scan base-package="com.ksh.ooo.controller" /> -->
<!-- 	<context:component-scan base-package="com.ksh.ooo.service" /> -->

3. Mapper 정의

  • SQL 구문 작성 및 처리 수행
  • 인터페이스 + 어노테이션 사용 또는 XML Mapper 사용 방식으로 나뉨
    => 주로, XML Mapper 사용 방식으로 수업

3-1.
- vo 패키지에 XXXVO 클래스 정의
- mapper 패키지에 XXXMapper 인터페이스 정의

3-2. src/main/resources - com.ksh.ooo.mapper 패키지 생성 및 XXXMapper.xml 파일 생성

1. XML 파일 생성 시 상단 DTD 를 자동으로 정의하기 위한 방법(선택 사항)

Preferences - XML - XML Catalog
Add 버튼 클릭하여 첫번째 항목 추가

Location : http://mybatis.org/dtd/mybatis-3-mapper.dtd
Key : -//mybatis.org//DTD Mapper 3.0//EN

Add 버튼 클릭하여 두번째 항목 추가

Location : http://mybatis.org/dtd/mybatis-3-config.dtd
Key : -//mybatis.org//DTD Config 3.0//EN

User Specified Entries 항목에서 두 개의 DTD 항목 생성 확인

2.

XML 파일 생성

파일명(XXXMapper.xml) 입력 후 Next

Create file using a DTD 선택 후 Next

Select XML Catalog entry 선택 후 User Specified Entries 목록에서
mybatis-3-mapper.dtd 클릭 후 Next

Finish 클릭

3. 생성한 XXXMapper.xml 파일의 <mapper> 태그 내의 namespace 속성 설정

<?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="com.ksh.ooo.mapper.MemberMapper">

	<!-- SQL 구문 실행을 위한 태그 설정 -->

</mapper>

=> XXXMapper 인터페이스 지정(패키지명 포함)

4.

src/main/resources/mybatis-config.xml 파일 생성(DTD 항목 중 mybatis-3-config.dtd 활용)

0개의 댓글