Spring5 - MyBatis, lombok 기본 세팅
MyBatis(마이바티스)
JDBC를 대체하는 SQL매핑 프레임워크다. SQL을 기반으로 DB와 자바 등의 언어를 연결시켜주는 역할을 한다. 소스 코드에서 SQL문장을 분리하여 별도의 XML파일로 작성한 후 소스 코드와 연결한다. 즉, SQL구문 실행에 필요한 코드의 복잡한 구조를 단순화하는데 사용되는 프레임워크다.
- 장점
자동으로 Connection객체를 반환(close)한다. - 장점
내부적으로 PreparedStatement객체를 사용하여 SQL구문을 처리(자동)한다. - 장점
리턴 타입 지정을 통해 자동으로 해당 타입 객체 생성 및 ResultSet 객체 등에 대한 처리(자동)를 한다. - 장점
파라미터 지정을 통해 SQL 구문에서 사용할 데이터를 전달 처리(자동)한다.
pom.xml 파일 설정
pom.xml에 JDBC 연동에 필요한 라이브러리를 추가한다.
-
스프링에서 JDBC 연동에 필요한 기능을 제공하는 spring-jdbc 라이브러리
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <!-- <version>5.3.30</version> --> <!-- 별도의 버전을 명시하기 보다 스프링의 기본 버전을 그대로 사용 --> <version>${org.springframework-version}</version> </dependency>
https://mvnrepository.com/artifact/org.springframework/spring-jdbc
-
MySQL Connector(JDBC 드라이버) 라이브러리 추가
<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.0.33</version> </dependency>
https://mvnrepository.com/artifact/com.mysql/mysql-connector-j
-
커넥션 풀을 관리하는 라이브러리 추가
HikariCP 라이브러리를 활용(Tomcat DBCP 대용으로 사용 가능)하면 Tomcat DBCP에 비해 가볍고, 빠르고, 안정적인 처리를 할 수 있다.<dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>5.0.1</version> </dependency>
Java 11 이상이면 mvnrepository.com 대신 https://github.com/brettwooldridge/HikariCP 접속 후 Artifacts 항목의 Java 11+ maven artifact 부분 라이브러리 태그 복사 붙여넣기.
- MyBatis 활용에 필요한 라이브러리 추가
-
MyBatis 기본 라이브러리
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.13</version> </dependency>
https://mvnrepository.com/artifact/org.mybatis/mybatis
-
MyBatis - Spring 연동 라이브러리
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.1.1</version> </dependency>
주의! 3.x.x 버전 사용 시 JDK 11 에서 오류 발생(지원 불가) => 2.x.x 버전 사용.
https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
-
-
VO 클래스의 요소 자동 관리를 위한 Lombok 라이브러리
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope> </dependency>
이클립스 환경에서 라이브러리 추가와 별개로 플러그인 설치가 필요하다.
https://mvnrepository.com/artifact/org.projectlombok/lombok
root-context.xml 설정
먼저 파일을 연 후 아래쪽 탭 중 Namespaces탭을 클릭 후 mybatis-spring항목을 체크한다.
HikariCP 라이브러리 사용을 위한 설정(커넥션풀 설정)들이다.
-
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/study_spring3"></property> <property name="username" value="root"></property> <property name="password" value="1234"></property> </bean>
기존 톰캣 DBCP 사용 시 context.xml에 설정했던 내용이다. com.zaxxer.hikari 패키지의 HikariConfig 클래스 지정 및 속성 설정이다. property 태그를 활용하여 DB 접속에 필요한 정보 4가지 속성을 설정한다.
-
HikariCP를 통해 커넥션을 관리하는 DataSource객체(HikariDataSource) 설정
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"> <constructor-arg ref="hikariConfig"></constructor-arg> </bean>
생성자 파라미터로 1번에서 생성한 HikariConfig객체를 전달한다.
-
Connection객체를 생성, 쿼리 전달 및 결과 리턴 등의 작업을 수행할 SQLSession(Factory)객체 설정
MyBatis - Spring 연결을 담당하며, 내부적으로 SQLSession 객체를 통해 작업을 수행한다.<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/mytest/mytest/mapper/*Mapper.xml"></property> </bean>
주의할 점
- 이전에 이미 DataSource객체 설정이 완료되어 있어야 한다.
-
태그의 id 값, class 값은 고정이다. -
태그의 dataSource, configLocation, mapperLocations 이름도 고정이다. - configLocation, mapperLocations 속성(항목)에 지정된 각각의 파일(xml)이 실제 위치에 생성되어 있어야 한다.
설정 항목 중 classpath가 가리키는 기본 위치 : src/main/resources 패키지
mybatis-config.xml, *Mapper.xml 설정
위에서 설정했던 configLocation과 mapperLocations의 속성에 지정된 파일을 만들어 준다.
-
mybatis-config.xml
위에서 설정한 경로대로 src/main/resources/mybatis-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></configuration>
-
*Mapper.xml
위에서 설정한 경로대로 src/main/resources/com/mytest/mytest/mapper/StudentMapper.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="com.mytest.mytest.mapper.StudentMapper"> <insert id="insertStudent"> INSERT INTO student VALUES ( null -- 주석인 문장. , #{name} ) </insert> </mapper>
mapper태그 사이에 SQL문을 작성한다.
주석은 “– “을 사용한다.
Leave a comment