# 데이터베이스 연동하기
웹서비스를 만들기 위해 데이터 베이스를 설정해 봅시다.
---
### DB 라이브러리 가져오기(pom.xml 설정)
먼저 필요 라이브러리들을 **pom.xml**에 추가해야 합니다. 필요한 라이브러리 목록은 아래와 같습니다.
+ PostgreSQL
+ Spring-JDBC
+ MyBstis
+ MyBatis-Spring
> 필요 라이브러리들은 http://www.mvnrepository.com/ 에서 검색할 수 있습니다.
자 그럼 pom.xml파일중 디펜던시스 태그 사이(`<dependencies>...</dependencies>`)에 아래 내용을 추가해 줍니다.
```xml
<dependencies>
<!-- PostgreSQL 9.4 -->
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4.1209.jre6</version>
</dependency>
<!-- MyBatis 3.4 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- MyBatis-Spring 1.3-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- Spring-JDBC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
...
</dependencies>
```
설정을 추가하면 해당 라이브러리들은 Maven Dependencies에 자동으로 다운받아집니다.
![Imgur](https://i.imgur.com/oPwvvey.png)
이제 서버를 재시작하여 잘 동작하는지 확인해 주세요.
![Imgur](https://i.imgur.com/2JhHnEL.png)
> 설정파일(*.xml)은, 서버를 재시작하여야 적용됩니다.
---
### root-context.xml 둘러보기
스프링에서는 웹서비스 전역에서 사용되는 객체들을 **root-context.xml** 파일에 등록하여 사용합니다. 이곳에 데이터베이스 객체들을 등록해 보도록 합시다.
먼저 root-context.xml 파일을 열어봅니다.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
// 이곳에 필요한 객체들을 등록해 줍니다.
</beans>
```
이제 이곳에 필요한 객체들을 하나씩 생성해 주도록 합시다.
---
### JDBC-PostgreSQL 객체 등록하기
**root-context.xml** 파일에 `dataSource` 객체를 등록합니다.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- properties -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:/jdbc.properties" />
<property name="fileEncoding" value="UTF-8" />
</bean>
<!-- JDBC-PostgreSQL -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
</beans>
```
다음으로 아래의 위치에 **jdbc.properties** 파일을 생성해 줍니다.
![Imgur](https://i.imgur.com/vbMGSk6.png)
```
jdbc.driverClassName=org.postgresql.Driver
jdbc.url=jdbc:postgresql://localhost:5432/myapp
jdbc.username=postgres
jdbc.password=postgres
```
DBMS에서 데이터 베이스를 생성하면서 마무리~
![Imgur](https://i.imgur.com/tPRsLmg.png)
> 설정을 마친후, 서버를 재시작하여 정상동작 여부를 확인하세요.
---
### MyBatis-Spring 객체 등록하기
**root-context.xml**에 `sqlSessionFactory` 객체를 등록합니다.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- properties -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" value="classpath:/jdbc.properties" />
<property name="fileEncoding" value="UTF-8" />
</bean>
<!-- JDBC-PostgreSQL -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- MyBatis-Spring -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
```
다음으로 **mybatis-config.xml** 파일을 생성해 줍니다.
![Imgur](https://i.imgur.com/tuJGgQr.png)
```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>
<!--
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql://localhost:5432/spring" />
<property name="username" value="postgres" />
<property name="password" value="postgres" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml" />
</mappers>
-->
</configuration>
```
> 설정을 마친후, 서버를 재시작해 적용여부를 확인하세요.
---
### 레퍼런스
+ http://www.mybatis.org/spring/getting-started.html
+ http://www.mybatis.org/mybatis-3/getting-started.html