애플리케이션과 데이터베이스를 연결해봅시다.

ConnectionConst

public abstract class ConnectionConst {
		//...1-a
    public static final String URL = "jdbc:h2:tcp://localhost/~/h2db/jdbc";
    public static final String USERNAME = "sa";
    public static final String PASSWORD = "";
}
  1. 데이터베이스에 접속하는데 필요한 기본 정보를 편리하게 사용할 수 있도록 상수로 만들었습니다.
    1. 참고로 파일 H2를 사용하기 때문에 JDBC URL은 제 임의대로 jdbc:h2:tcp://localhost/~/h2db/jdbc 로 설정했습니다. → 참고
  2. 상수를 모아서 쓴 것이기 때문에 직접 객체를 생성할 수 없도록 막기 위해서 추상 클래스로 생성했습니다.

DBConnectionUtil

이제 JDBC를 사용해서 실제 데이터베이스에 연결하는 코드를 작성해보죠.

package hello.jdbc.connection;

import lombok.extern.slf4j.Slf4j;

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

import static hello.jdbc.connection.ConnectionConst.PASSWORD;
import static hello.jdbc.connection.ConnectionConst.URL;
import static hello.jdbc.connection.ConnectionConst.USERNAME;

@Slf4j
public class DBConnectionUtil {
		//...1
    public static Connection getConnection() {
        try {
		        //...2
            Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            log.info("get connection={}, class={}", connection, connection.getClass());
            return connection;
        } catch (SQLException e) {
            throw new IllegalStateException(e);
        }
    }
}
  1. Connection
  2. DriverManager.getConnection(…)
  3. DriverManager.getConnection() 은 SQLException 을 던지는데 은 간단하게 하기 위해서 Checked Exception인 SQLException를 Uncheck Exception인 RuntimeException 하위에 있는 IllegalStateException으로 변경했습니다.

DBConnectionUtilTest

간단한 학습용 테스트 코드를 만들어서 실행해보죠.

@Slf4j
class DBConnectionUtilTest {

    @Test
    void connection() {
        Connection connection = DBConnectionUtil.getConnection();
        assertThat(connection).isNotNull();
    }

}