Java

[Java] maven java application(standalone) mybatis 연결하기

java application을 실행가능한 jar file로 만들어 서버에서 배치성 작업을 수행하는 프로그램을 작성하게 되었다.


특정위치의 파일을 읽어 특정 시간마다 HBase에 insert하는 로직의 프로그램인데, 사실 spring boot로 만들었지만, 컨펌을 못받음...


이유는 충분치 않지만(물론 내생각) 순수 자바로 작성하라는 지시를 받고 작성을 하게 되었다.


순수 자바로 mybatis 연동하여 db 통신을 해야 하는 데, 예전에도 만들었었지만, 할때마다 햇갈려서 글을 작성한다.


사설이 길었는 데, 요건으로 받은 내용을 정리하자면


1. 순수 java application

2. maven 기반

3. mybatis 로 db connection


정도이다.


mybatis 연결을 위해 config.xml file을 작성한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?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"/>
            <!--  connecting to Local MySql -->
            <dataSource type="POOLED">
                <property name="driver" value="org.apache.phoenix.jdbc.PhoenixDriver"/>
                <property name="url" value="jdbc:phoenix:hostname:port:/hbase" />
                <property name="username" value=""/>
                <property name="password" value=""/>
            </dataSource>
       </environment>
    </environments>
    <mappers>
       <mapper resource="sqlmap/test.xml"/>
    </mappers>
</configuration>
 
cs



사용할 driver, url, username, password를 입력한다. (본인은 phoenix를 연결했다)
resources 디렉터리에 설정파일들을 넣어두면 인식을 못한다.

1
2
3
4
5
6
7
8
     <resources>
          <resource>
              <directory>src/main/resources</directory>
              <includes>
                  <include>**/*.xml</include>
              </includes>
          </resource>
      </resources>

cs


pom.xml 에 위의 내용을 추가하자 (위치 상관없이 <project>안에만 들어가면 됨)


마지막으로 SqlSessionFactory를 resource에 맞게 build해서 반환하는 클래스를 작성한다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class MybatisConnectionFactory {
 
    private static SqlSessionFactory sqlSessionFactory;
 
    static{
        try{
            String resource = "config.xml";
            Reader reader = Resources.getResourceAsReader(resource);
 
            if(sqlSessionFactory == null){
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            }
        }catch(FileNotFoundException fileNotFoundException){
            fileNotFoundException.printStackTrace();
        }catch(IOException iOException){
            iOException.printStackTrace();
        }
    }
 
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}
cs