<!-- 예시: MySQL 연결 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>
</dependency>
✏️ Oracle을 사용하는 경우, ojdbc11.jar 또는 Maven Repository에서 추가한다.
| 라이브러리 | 특징 |
|---|---|
| commons-dbcp2 | 전통적인 커넥션 풀, Spring 3.x ~ 4.x 시대에 많이 사용 |
| HikariCP | Spring Boot 2.x 기본 내장. 경량/고성능 커넥션 풀 |
예시: HikariCP
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>5.0.1</version>
</dependency>
<!-- MyBatis 본체 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.14</version>
</dependency>
<!-- MyBatis-Spring 통합 모듈 -->
<dependency>
<groupId>org.mybatis.spring</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.1.1</version>
</dependency>
DataSource (커넥션 풀)
↓
SqlSessionFactory (MyBatis SQL 실행 객체 생성)
↓
SqlSessionTemplate (Spring이 관리하는 SqlSession)
↓
Mapper Interface (DAO 역할)
↓
Service (비즈니스 로직 계층)
스프링은 DataSource를 통해 커넥션 풀을 관리하고,
MyBatis는 SqlSessionFactory를 통해 SQL을 실행하고,
Spring이 SqlSessionTemplate을 통해 트랜잭션을 일관되게 묶음.
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
Servlet/JSP
- Commons DBCP
- Tomcat Connection Pool > 수업 사용
- context.xml > Resource 등록
스프링 > DBCP 사용 권장
- Commons DBCP
- HikariCP > 스프링 부트 기본 DBCP
-->
<!-- Commons DBCP 설정 -->
<!--
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
<property name="username" value="spring"></property>
<property name="password" value="1234"></property>
</bean>
-->
<!-- HikariCP -->
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<!-- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe"></property> -->
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"/>
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:xe"/>
<property name="username" value="spring"/>
<property name="password" value="1234"/>
</bean>
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig"/>
</bean>
<!-- MyBatis 설정 -->
<!-- SqlSessionTemplate 생성 도구(+환경 설정) -->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mappers/*.xml"/>
<property name="configLocation" value="classpath:config/mybatis-config.xml"/>
</bean>
<!-- 쿼리 실행 도구 -->
<bean class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg ref="sessionFactory"/>
</bean>
</beans>