KOSA Spring - DB와 연결

채정윤·2025년 4월 17일

Spring

목록 보기
6/25
post-thumbnail

코드

pom.xml

		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.4</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.zaxxer/HikariCP -->
		<dependency>
			<groupId>com.zaxxer</groupId>
			<artifactId>HikariCP</artifactId>
			<version>2.7.4</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>		
		
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>	

root-context.xml

	<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
		<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
		<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:XE"/>
		<property name="username" value="agent"/>
		<property name="password" value="1234"/>
	</bean>
	
	<!-- 커넥션 풀 생성 -->
	<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
		<constructor-arg ref="hikariConfig"/> 
		<!-- 히카리 컨피그를 데이터소스 생성하는데에 사용 (객체 주입) --> 
	</bean>
	
	<!-- db연결 (sqlSessionFactory=마이바티스) -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/> 
		<!-- 데이터소스를 세션팩토리 생성하는데에 사용 (객체 주입) --> 
	</bean>
	
	<!-- springcontainer에게 매퍼 인식 -->
	<mybatis-spring:scan base-package="org.zerock.mapper"/>

TimeMapper.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="org.zerock.mapper.TimeMapper">

  <select id="getTime" resultType="string">
  SELECT sysdate FROM dual 
  </select>

</mapper>

TimeMapper.java

package org.zerock.mapper;

public interface TimeMapper {
	public String getTime();

}

DataSourceTests.java

package org.zerock.sample;

import static org.junit.Assert.*;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.zerock.mapper.TimeMapper;

import lombok.extern.log4j.Log4j;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
@Log4j
public class DataSourceTests {
	@Autowired
	private TimeMapper timeMapper;

	@Test
	public void test() {
		log.info(timeMapper.getTime());
	}

}

// 결과
//INFO : org.zerock.sample.DataSourceTests - 2025-04-17 15:16:32.0
//INFO : org.springframework.context.support.GenericApplicationContext - Closing org.springframework.context.support.GenericApplicationContext@f2ff811: startup date [Thu Apr 17 15:16:32 KST 2025]; root of context hierarchy
//INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown initiated...
//INFO : com.zaxxer.hikari.HikariDataSource - HikariPool-1 - Shutdown completed.

Mapper파일을 어디에 놓는가

1. resources 에 폴더 만들기

2. 그 폴더에 Mapper.xml생성

3. main/java에 Mapper.java 생성

TimeMapper의 namespace와 같은 경로여야됨!!!!!

즉 Mapper java 인터페이스를 등록하고 이름을 통해 Mapper xml 호출 가능!!

0개의 댓글