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를 연결하는 설정이 끝났다.
다음엔 필요한 기능을 구현해보자.
'Spring' 카테고리의 다른 글
12.09.(금) Spring Framework(7): 회원관리 기능(1) (0) | 2022.12.11 |
---|---|
12.09.(금) Spring Framework(6): Service/ServiceImpl (0) | 2022.12.11 |
12.08.(목) Spring Framework(4): Header/Footer (0) | 2022.12.10 |
12.08.(목) Spring Framework(3): Controller 매핑 (0) | 2022.12.10 |
12.08.(목) Spring Framework(2): MVC흐름 (0) | 2022.12.10 |