어느 정도 개발환경이 갖춰졌으니 이번에는 DB를 만들고 MyBatis를 연동하자.
DB는 오픈소스 중에서 한번도 안 써본 Maria DB를 골랐다.
Maria DB는 MySQL AB 출신들이 배포한 것이라 그런지 MySQL Workbench로 관리하는 것이 가능하다.
그래서 디비툴은 MySQL Workbench로 받아서 설치했다.
1. DB 및 DB 툴 다운로드, 설정
Maria DB → downloads.mariadb.org (10.2 받음)
MySQL Workbench → dev.mysql.com/downloads/workbench (6.3.10 받음)
요 두개를 설치하는 과정은 자세하게 서술해주신 분들이 많으니 생략하고....
root 계정으로 접속하여 웹사이트와 연결할 DB 및 'admin' 계정을 만들어 해당 DB에 대한 권한을 준다.
실행할 쿼리는 아래와 같다.
create database myhome;
create user 'admin'@'localhost' identified by '비밀번호';
grant all privileges on myhome.* to 'admin'@'%';
flush privileges;
이제 workbench의 홈으로 돌아와서 커넥션을 추가해놓자.
아래 표시된 + 버튼을 누르면 커넥션을 추가하는 창이 나온다.
Connection Name은 알아보기 쉽게 myhome으로 하고 아까 권한을 준 유저 정보를 입력한 후 Test Connection을 눌러본다.
성공했다는 팝업이 뜨면 ok 버튼을 누른다.
홈화면으로 돌아와보면 아래와 같이 방금 추가한 DB가 보인다.
2. 이클립스 설정
DB는 잠시 놔두고 이클립스로 돌아와 프로젝트 내 pom.xml 파일을 열어 아래 애들을 추가한다.
저렇게 써놓기만 해도 Maven님이 알아서 다 해주신다...
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>3.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- Maria DB -->
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>1.6.0</version>
</dependency>
<!-- DB connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.27</version>
<scope>compile</scope>
</dependency>
<!-- jackson -->
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
이제 src > main > webapp > WEB-INF > spring 아래 root-context.xml 파일을 열고 아래를 추가한다.
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/myhome"/>
<property name="username" value="admin"/>
<property name="password" value="비밀번호"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
더 이상 나가면 너무 힘드니 우선 여기서 턴을 종료하고
scr/main/java 폴더 아래에 common.dao 패키지를 생성하고 그 안에 AbstractDAO.java 클래스를 생성하는 것까지만 하려고 한다.
AbstractDAO.java에는 아래와 같이 소스를 작성해준다.
public class AbstractDAO {
protected Log log = LogFactory.getLog(AbstractDAO.class);
@Autowired
private SqlSessionTemplate sqlSession;
protected void printQueryId(String queryId) {
if(log.isDebugEnabled()) {
log.debug("\t QueryId \t : " + queryId);
}
}
public Object insert(String queryId, Object params) {
printQueryId(queryId);
return sqlSession.insert(queryId, params);
}
public Object update(String queryId, Object params) {
printQueryId(queryId);
return sqlSession.update(queryId, params);
}
public Object delete(String queryId, Object params) {
printQueryId(queryId);
return sqlSession.delete(queryId, params);
}
public Object selectOne(String queryId) {
printQueryId(queryId);
return sqlSession.selectOne(queryId);
}
public Object selectOne(String queryId, Object params) {
printQueryId(queryId);
return sqlSession.selectOne(queryId, params);
}
@SuppressWarnings("rawtypes")
public List selectList(String queryId) {
printQueryId(queryId);
return sqlSession.selectList(queryId);
}
@SuppressWarnings("rawtypes")
public List selectList(String queryId, Object params) {
printQueryId(queryId);
return sqlSession.selectList(queryId, params);
}
}
이 상태에서 톰캣 서버를 구동시켰을 때 아무 이상 없이 서버가 시작되는지 확인하고,
서버가 구동된다면 설정에는 문제가 없는 것으로 알고 다음 단계로 넘어가면 된다.