Simple JDBC Project (kor)
(1) Java, DB 설치 + Docker Compose로 쉽게 해 보기
(2) 프로젝트 생성, Postgresql 컨테이너 게시
(3) Flyway 도입하기
(4) JDBC 연결하기
(5) 위임된 Main Application
JDBC Driver가 추가되었는지 확인하기
이번 글에서는 JDBC를 통해 데이터베이스에 잘 연결할 수 있는지 확인해 보는 짧은 코드를 제시합니다.
우선 우리는 Flyway 적용 과정에서 이미 Postgresql용 JDBC 드라이버 라이브러리를 추가했습니다. org.postgresql:postgresql:42.7.3
라이브러리가 잘 추가되어 있는지 확인해 보세요.
dependencis {
// ...
// db
implementation 'org.postgresql:postgresql:42.7.3'
implementation 'org.flywaydb:flyway-mysql:9.22.3'
// ...
}
JDBC 및 데이터베이스 연결 확인해 보기
이제 JDBC 드라이버를 통해 데이터베이스에 연결이 잘되고 있는지 확인해 봅니다.
확인용 클래스 생성 (권장)
우리는 연습삼아 JDBC 연결 확인용 클래스를 만들어 봅시다.
DriverManager
의 static 메서드인 getConnection(URL, username, password)
메서드를 통하여 DB 연결을 확인할 수 있습니다. 이 함수는 checked exception으로 SQLException
을 catch 또는 throw 하도록 지시합니다.
우리가 주목해야 할 주요 동작은 try~catch~resources 구문에서 connection을 꺼내 온 것입니다. 그리고 그 connection이 null
이면 연결되지 않은 것, null
이 아니라면 연결이 잘 수행된 것입니다.
참고: try~catch~resources 구문은 connection.close()
를 보장해 줍니다. (만약 AutoClosable
인터페이스를 구현한 클래스라면 try~catch~resources
구문을 통해 close를 보장하는 게 좋습니다.)
- package:
com.example.common.support.db
package com.example.common.support.db;
import java.sql.DriverManager;
public class JdbcAccessChecker {
private final String dbUrl;
private final String username;
private final String password;
// static 초기화 블록
// JdbcAccessChecker.class가 로드될 때 한 번 실행됩니다.
static {
try {
// [1] Driver 로드를 명시합니다. (일부 데이터베이스용 드라이버는 자동으로 로드 되지만, 일부는 명시해야 합니다.)
Class.forName("org.postgresql.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// [2] 생성자에서 DB 접속 정보를 받습니다.
public JdbcAccessChecker(
String dbUrl,
String dbUsername,
String dbPassword
) {
this.dbUrl = dbUrl;
this. username = dbUsername;
this. password = dbPassword;
}
// [3] DB 연결에 성공하면 true, 아니면 false를 반환하는 메서드를 만듭니다.
// 커넥션을 생성해 보고, 이것이 null이면 false를 반환하도록 구현합니다.
public boolean hasConnectivity() {
try (
// 데이터베이스에 대한 '접속' 또는 '연결'이라고 부르는 객체입니다.
Connection connection =
DriverManager.getConnection(dbUrl, username, password);
) {
// connection이 null이 아니면 DB 연결에 성공한 것입니다.
return connection != null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
연결 확인
import com.example.common.flyway.config.MyFlyway;
import com.example.common.support.db.MyJdbcConnectivityChecker;
import static com.example.common.support.db.DatabaseAccessConstants.DB_PASSWORD;
import static com.example.common.support.db.DatabaseAccessConstants.DB_URL;
import static com.example.common.support.db.DatabaseAccessConstants.DB_USERNAME;
public class Main {
public static void main(String[] args) {
// 이전 글에서 작성한 플라이웨이 실행 코드입니다.
MyFlyway myFlyway = new MyFlyway(DB_URL, DB_USERNAME, DB_PASSWORD);
myFlyway.migrate();
// JDBC 연결을 확인합니다.
validateJdbcConnectivity();
}
private static void validateJdbcConnectivity() {
// 연결 확인용 객체입니다.
JdbcAccessChecker checker =
new JdbcAccessChecker(DB_URL, DB_USERNAME, DB_PASSWORD);
// 연결 여부 확인: `checker.hasConnectivity()`
boolean hasConnectivity = checker.hasConnectivity();
// 연결되지 않았다면 런타임 예외를 발생시킵니다.
if (!hasConnectivity) {
throw new RuntimeException("JDBC 연결 필요");
}
// 정상적으로 연결되었다면 위에서 throw되지 않고 이곳에 도착합니다.
System.out.println("JDBC 연결 성공");
}
}
< Prev
Next >