Search

2016년 4월 16일 토요일

[Database] [H2] [Java] Imbedded Database H2를 eclipse에서 사용하기.

#1. 들어가기
 앱을 개발 한다던가, 소규모의 프로젝트에서 간단하게 데이터베이스와 SQL 기능이 필요할 때,  도움이 될만한 데이터베이스를 소개하고자 한다. Imbedded Database나 H2에 관한 상세한 내용은 검색해보면 많이 나오니.. 찾아볼 것을 추천한다. 여기에서는 최초 Hello World를 찍듯, 이클립스로 "아~ 이렇게 사용하는구나" 하는 수준에서 알아본다.

#2. 준비
 1) H2 database 다운로드.
 http://www.h2database.com/html/main.html
 위 사이트에 들어가보면, All Platforms 라고 된 zip 파일을 다운받으면 된다. (만약, Java와 eclipse없이 H2만을 편하게 사용하려면, http://www.h2database.com/html/quickstart.html를 참조해 그냥 사용하면 된다. )























 2) zip파일의 압축을 풀면 bin 폴더에 h2-1.4.191.jar 파일이 있다.
  (버젼은 다운로드 시점에 따라 다를 수 있다.)









 3) eclipse에서 Java Project 생성 후, lib폴더를 만들어(정리정돈을 위해..) 복사해 넣어주자.











 4) h2-1.4.191.jar을 선택해 마우스 우클릭 ->  Build Path -> Add to Build Path.
 여기까지 된 상태면, H2 데이터베이스 사용을 위한 모든 준비가 끝났다고 봐도 좋다. (참 간단하죠??)











#3. 사용하기
 아주아주 간단하게 필요한 것만 구현한 코드를 아래에서 살펴보자.
1) 14~16번 줄에서 새로 만들 DB와 USER, PW를 설정.
2) 만약 프로그램을 실행시킬 때마다 DB를 Drop 시키지 않고 계속 유지하고 싶다면, 20번 줄은 주석처리.
3) 50~60번 줄을 통해 간단하게 테이블을 생성해 데이터를 넣고, 조회하는 것을 테스트 해봤다.
4) 참고로 H2는 왠만한 SQL문법들은 다 사용할 수 있다. (참조 : http://www.h2database.com/html/grammar.html)













package kr.oskarDevelopers.martin;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.h2.tools.DeleteDbFiles;

public class TestDriver {

    private static final String DB_DRIVER = "org.h2.Driver";
    private static final String DB_CONNECTION = "jdbc:h2:~/testdb"; // database name
    private static final String DB_USER = "martin";                 // user id
    private static final String DB_PASSWORD = "1234";               // passward

    public static void main(String[] args) {
        try {
            DeleteDbFiles.execute("~", "testdb", true); // drop db if exist 'testdb'
            initDB();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static Connection getDBConnection() {
        Connection dbConnection = null;
        try {
            Class.forName(DB_DRIVER);
        } catch (ClassNotFoundException e) {
            System.out.println(e.getMessage());
        }
        try {
            dbConnection = DriverManager.getConnection(DB_CONNECTION, DB_USER, DB_PASSWORD);
            return dbConnection;
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
        return dbConnection;
    }

    private static void initDB() throws SQLException {
        Connection connection = getDBConnection();
        Statement stmt = null;
        try {
            connection.setAutoCommit(false);
            stmt = connection.createStatement();

            // create TEST_TABLE for example
            stmt.execute("CREATE TABLE TEST_TABLE(idx INT PRIMARY KEY, name VARCHAR(100));");
            
            // insert some values into TEST_TABLE
            stmt.execute("INSERT INTO TEST_TABLE VALUES(1, 'Martin.Park'), (2, 'OskarDevelopers');");
             
            // get result by using SELECT query
            ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_TABLE;");
            while (rs.next()) {
                System.out.println("idx : " + rs.getString("idx") + " / " + "name : " + rs.getString("name"));
            }
            
            stmt.close();
            connection.commit();
            
        } catch (SQLException e) {
            System.out.println("Exception Message " + e.getLocalizedMessage());
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            connection.close();
        }
    }
}


#4. 결과화면
 이제부터는 사용 목적에 맞게 이용하면 된다.  (너무 성의없나?..)











댓글 없음:

댓글 쓰기