Window 10 Intellij Maven으로 생성한 SpringBoot 프로젝트 MyBatis 라이브러리 추가
목록
1. MyBatis Spring Boot Starter 3.0.3 라이브러리 추가
2. MyBatis Core 라이브러리 추가
3. MyBatis XML 매퍼에서 DTD를 사용하는 이유
4. MyBatis application.properties 설정
5. 종합 정리
1. MyBatis Spring Boot Starter 3.0.3 라이브러리 추가
실제 pom.xml 적용 소스코드
<!-- MyBatis-Spring Boot Starter 라이브러리 추가 --> <!-- 2024.08.20 기준 제일 최신 라이브러리 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> |
org.mybatis.spring.boot:mybatis-spring-boot-starter 의존성은
MyBatis를 Spring Boot에 사용하기 위해 설계된 스타터 라이브러리
이 스타터는 Spring의 "JdbcTemplate" 또는 "MyBatis의 SQLSession"을
사용하여 데이터베이스와 상호작용할 수 있게 해주며, MyBatis와 관련된
여러 설정 ( 예 : 매퍼 스캔, 트랜잭션 관리)을 자동으로 처리합니다.
Spring Boot의 다른 스타터들과 마찬가지로, MyBatis-Spring Boot
스타터는 필요한 종속성과 설정을 최소화하여 개발자가 더 쉽게
MyBatis를 사용할 수 있도록 합니다.
MyBatis-Spring-boot-starter 주요 기능 | 설명 |
자동 매퍼 스캔 | Spring Boot가 MyBatis 매퍼 인터페이스를 자동으로 스캔하여 Been으로 등록합니다. 별도로 매퍼 파일을 등록할 필요가 없습니다. |
자동 트랜잭션 관리 | Spring의 트랜잭션 관리와 MyBatis의 트랜잭션을 통합하여 트랜잭션을 쉽게 관리할 수 있습니다. |
간편한 설정 | application.properties 또는 application.yml 파일에서 MyBatis 관련 설정을 쉽게 지정할 수 있습니다. |
2. MyBatis Core 라이브러리 추가
실제 pom.xml 적용 소스코드
<!-- MyBatis Core 라이브러리 추가 --> <!-- 2024.08.20 기준 제일 최신 라이브러리 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.16</version> </dependency> |
'org.mybatis:mybatis' 의존성은 MyBatis의 핵심 라이브러리입니다.
이 라이브러리는 SQL Mapper 파일( XML )을 사용하여 SQL 쿼리를 정의하고,
데이터베이스와 상호작용(연결)할 수 있도록 지원합니다.
MyBatis는 SQL 쿼리를 명시적으로 작성할 수 있게 해주며, 이 쿼리들은
매퍼 XML 파일에 정의됩니다. 이러한 매퍼 파일을 통해 ORM(객체 관계 매핑)과
달리 SQL 쿼리를 직접 관리하고 최적화 할 수 있습니다.
MyBatis Core 주요 기능 | 설명 |
XML 매퍼 파일 사용 | 매퍼 파일(xml)을 통해 SQL 쿼리, 결과 매핑, 동적 SQL 등을 정의할 수 있습니다. 이러한 매퍼 파일은 일반적으로 resources 디렉토리의 "mapper"폴더에 위치하며 DTD를 통해 MyBatis의 XML 스키마를 준수하도록 합니다. |
동적 SQL 지원 | MyBatis는 XML 매퍼 파일을 사용하여 조건에 따라 동적으로 SQL 쿼리를 생성할 수 있습니다. <if>태그 <choose>태그 <when>태그 등 이를 통해 복잡한 쿼리 로직을 보다 효율적으로 관리할 수 있습니다. |
플러그인 시스템 | MyBatis는 다양한 플러그인을 통해 기능을 확장할 수 있습니다. 예를 들어, 페이징, 캐싱, 로깅 등의 기능을 쉽게 추가할 수 있습니다. |
3. MyBatis XML 매퍼에서 DTD를 사용하는 이유
MyBatis 매퍼 파일(XML)에서 DTD("Document Type Definition")는 XML 파일의 구조를 정의하며
올바른 XML 구문을 보장합니다. MyBatis에서 사용하는 DTD파일은 MyBatis의 XML 매퍼 파일이정확한 구조를
따르고 있는지 검증하는 역할을 합니다.
DTD는 MyBatis 매퍼 XML 파일에서 "<!DOCTYPE>" 선언을 통해 사용되며, 이를 통해
XML 매퍼가 정확한 형식으로 작성되었는지 확인 합니다. 예를 들어
다음과 같이 DTD 선언을 사용합니다.
실제 적용 mapper.xml 소스 코드
<!-- DTD 선언 --> <?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> |
4. MyBatis application.properties 설정
실제 application.properties 적용 소스 코드
# ======================== # = MyBatis 설정 # ======================== # MyBatis 매퍼 XML 파일의 위치를 지정 ( resource 디렉토리의 하위 mapper 디렉토리 ) mybatis.mapper-locations=classpath:mapper/*.xml mybatis.configuration.map-underscore-to-camel-case=true mybatis.configuration.log.impl=org.apache.ibatis.logging.stdout.StdOutImpl mybatis.type.-aliases-package=com.rnbsoft.dress_code.dto # MyBatis 설정 파일 위치 ( 선택사항, custom 설정이 필요한 경우에만 사용 ) # mybatis.config-location=classpath:mybatis-config/xml |
MyBatis 설정 | 설명 |
mybatis.mapper-locations-classpath:mapper/.*xml | MyBatis가 Mapper XML 파일을 어디에서 찾을지를 설정 하는 옵션입니다. 여기서 "classpath:mapper/*.xml"은 클래스 패스 내의 "mapper" 디렉토리 아래에 있는 모든 XML파일을 대상으로 합니다. 이 설정을 통해 MyBatis는 이 경로에 있는 매퍼 파일들을 자동으로 로드하여 SQL문과 매핑 관계를 설정 합니다. |
mybatis.configuration.map-underscore-to-camel-case= true |
데이터베이스의 컬럼 이름이 언더스코어("_") 표기법으로 되어 있을 때, 이를 자동으로 카멜케이스(Camel Case) 형태의 Java 변수 이름으로 매핑해주는 설정입니다. 예를 들어 데이터베이스 컬럼이 "USER_NAME"이면, 이를 Java 객체에서 "userName"으로 매핑해줍니다. |
mybatis.configuration.log.impl= apache.ibatis.logging.stdout.StdOutImpl |
MyBatis에서 로그를 출력할 때 어떤 로그 구현체를 사용할지 지정하는 옵션입니다. "org.apache.ibatis.logging.stdout.StdOutImpl"는 표준 출력(System.out)을 통해 로그를 출력하는 구현체 |
mybatis.type-aliases-package= com.rnbsoft.dress_code.dto |
특정 패키지에 있는 클래스들을 타입 별칭(Type Alias)으로 등록하는 설정입니다. 이를 통해 XML이나 어노테이션을 사용할 때 클래스의 풀 패키지 이름을 사용하지 않고 간단한 별칭을 사용할 수 있습니다. 실제 적용 resultType="com.rnbsoft.dress_code.dto.UserDTO" 대신 "UserDTO" 라고 간단히 표기할 수 있습니다. |
5. 종합 정리
MyBatis 관련 라이브러리를 "pom.xml"에 추가함으로써, Spring Boot와 MyBatis 간의
통합(연결)을 원활하게 하며, XML 매퍼 파일을 통해 SQL 쿼리를 명확하게 정의하고
사용할 수 있습니다. Maven 빌드 설정과 함께, 프로젝트가 올바르게 컴파일되고
동작할 수 있도록 설정을 조정하는 것이 중요합니다.