JDBC 연결

스프링에서 데이터베이스에 연결하는 방법에 대해서 알아보자.

이클립스에서 DB에 접속하는 방법과 비슷하지만, 여기서는 클래스를 만들어서 상속을 통해서 접속하기보다, .xml파일들에 등록을 해주고 지정된 위치에 매핑과 쿼리문을 넣어서 접속 및 조회를 할 수 있다.

라이브러리 추가

WEB-INF폴더 밑에 lib폴더를 만들고, 그 안에 ojdbc11.jar 라이브러리를 복사시킨다.

pom.xml에서 Spring JDBC dependency를 Maven Repository에서 버전 확인 후 추가한다.

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.22.RELEASE</version>
</dependency>

동일하게 몇 가지 라이브러리를 추가하자.

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.2.22.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.9</version>
</dependency>

이제 .xml파일들을 수정해주자.

root-context.xml

여기서 xml파일을 수정할때 name값은 고정임을 꼭 숙지하고 따라가자.

DataSource객체를 추가하여 연결시킬 수 있다. 이전에 만들었던 DBConn클래스를 java beans로 등록시켜준다고 생각하면 된다.

기본으로 만들어져있는 root-context.xml에 bean으로 클래스를 불러와서 실행한다.

<!-- Oracle JDBC -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
	<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
	<property name="username" value="scott"></property>
	<property name="password" value="tiger"></property>
</bean>
<!-- SqlSessionFactory : xml파일의 위치와 파일명 -->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
</bean>

이제 src.main.resources 패키지에 mybatis-config.xml파일을 생성한다.

mybatis홈페이지의 Getting Started에서 SqlSessionFactory 빌드하기를 참조하여 mapper설정 구문을 복사하자.

우리는 mybatis-spring을 이용할 것이기 때문에 configuration태그만 남기고 지우자.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>

생성한 mybatis-config.xml을 root-context.xml에 등록시키자.

<!-- SqlSessionFactory : xml파일의 위치와 파일명 -->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>

resources패키지에 mapper폴더를 생성해서 여기에 Mapper.xml파일(SQL쿼리문)을 생성할 것이다.

나중에 생성될 Mapper.xml파일들에 대해서 경로설정을 추가해주자. Mapper.xml로 끝나는 파일에 대한 경로 설정이다.

<!-- SqlSessionFactory : xml파일의 위치와 파일명 -->
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation" value="classpath:mybatis-config.xml"></property>
	<!-- boardMapper.xml, memberMapper.xml, dataMapper.xml -->
	<property name="mapperLocations" value="classpath:/mapper/*Mapper.xml"></property>
</bean>

web.xml에서 요청 시 root-context.xml을 찾아갈 수 있게 경로를 추가해준다.

servlet태그에서 servlet-context.xml 다음에 추가해주자.

<!-- Processes application requests -->
<servlet>
	<servlet-name>appServlet</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/spring/appServlet/servlet-context.xml
			/WEB-INF/spring/root-context.xml
		</param-value>
	</init-param>
	<load-on-startup>1</load-on-startup>
</servlet>

web.xml에 모든 페이지에 대해 post방식의 한글 인코딩을 설정할 수 있다.

<!-- post방식에 대한 UTF-8 인코딩 -->
<filter>
	<description></description>
	<display-name>SpringEncodeFilter</display-name>
	<filter-name>SpringEncodeFilter</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
	<init-param>
		<param-name>forceEncoding</param-name>
		<param-value>true</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>SpringEncodeFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

이렇게 DB를 연결하는 설정이 끝났다.

다음엔 필요한 기능을 구현해보자.

+ Recent posts