2017 - 11 - 20 (월)
초기설정
오랫만에 스프링을 다시 보려하니까 막막하여 이전에 블로깅한 자료를 보면서 다시 정리하고자한다.
1 . DB 유저생성
우선 데이터베이스와 연동 테스트를 위해 데이터베이스 설치 및 유저 생성 / 스키마생성을 해야한다.
mysql workbench root 로 접근 후 좌측상단의 users and privileges 에서 user 생성후 administrative Roles 탭에서 권한을 부여한다.
2 . 스키마 생성
위처럼 스키마탭에서 마우스 우측 클릭 후 스키마를 생성한다.
으로 들어가 default schema 에 생성한 스키마의 이름을 준다.
3 . DB 연결 테스트 ( JUnit 활용 )
Junit 버전 : 4.12 ( pom.xml 에서 버전 수정 필요 )
mysql 드라이버와 연결을 위해 mysql-connector-java dependency 를 추가해준다.
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
jdk 버전도 높여줄 필요가 있다.
jdk 버전 : 1.8
-
pom.xml 에서 java-version 을 1.8 로바꾸고 maven-compiler-plugin 의 configuration source 와 target을 1.8로 바꾼다.
-
properties 에서 project Facets 에서 java 버전을 1.8 로 올려준 후 메이븐 업데이트 실행
JDBC 연결 테스트코드
public class MySQLConnectionTest {
private static final String Driver = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://127.0.0.1:3306/allbody?useSSL=false";
private static final String USER = "db user이름";
private static final String PW = "db비밀번호";
@Test
public void testConnection() throws Exception{
Class.forName(Driver);
try(Connection con = DriverManager.getConnection(URL, USER, PW)){
System.out.println(con);
}catch(Exception e) {
e.printStackTrace();
}
}
}
4 . MyBatis + MySQL 설정 후 테스트
필요 dependency : spring-test 의 경우 was 없이 간단히 테스트를 하기위해 라이브러리를 추가합니다.
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.8.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${org.springframework-version}</version>
<scope>test</scope>
</dependency>
위의 dependecy를 추가한 후 메이븐 업데이트 필수
이 후 root-context.xml 의 namespace 에 다음 configuration 파일을 체크하고 메이븐 업데이트 한다.
5 . datasource 테스트
root-context.xml 에 다음 소스 추가
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/allbody?useSSL=false"></property>
<property name="username" value="유저아이디"></property>
<property name="password" value="비밀번호"></property>
</bean>
테스트 코드를 만들어 데이터소스 테스트 진행
package com.bitproject.test;
import java.sql.Connection;
import javax.inject.Inject;
import javax.sql.DataSource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})
public class DataSourceTest {
@Inject
private DataSource ds;
@Test
public void testConnection()throws Exception{
try(Connection con = ds.getConnection()){
System.out.println(con);
}catch(Exception e) {
e.printStackTrace();
}
}
}
6 . MyBatis 연결
root-context.xml 에 sqlSessionFactory 객체를 설정해준다.
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:/mybatis-config.xml"></property>
</bean>
resources/mybatis-config.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>
</configuration>
MyBatis 연동이 잘 되었는지 테스트 한다.
package com.bitproject.test;
import javax.inject.Inject;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations= {"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"})
public class MyBatisTest {
@Inject
private SqlSessionFactory sqlFactory;
@Test
public void testFactory() {
System.out.println(sqlFactory);
}
@Test
public void testSession()throws Exception{
try(SqlSession session = sqlFactory.openSession()){
System.out.println(session);
}catch(Exception e) {
e.printStackTrace();
}
}
}