애플리케이션과 데이터베이스 연결
H2 데이터베이스 서버를 실행해놔야 함
cd 경로명
: 다운받은 h2 폴더의 bin 폴더로 이동 ./h2.sh
: MAC 기준 H2 서버를 실행abstract
로 선언public static final
로 선언규약
이므로 지켜야 함package hello.jdbc.connection;
public abstract class ConnectionConst {
public static final String URL = "jdbc:h2:tcp://localhost/~/test"; // 규약
public static final String USERNAME = "sa";
public static final String PASSWORD = "";
}
java.sql.Connection
DriverManager
의 getConnection
을 사용해 데이터베이스와 연결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.*;
@Slf4j
public class DBConnectionUtil {
public static Connection getConnection() {
try {
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("get connection={}, class={}", connection, connection.getClass());
return connection;
} catch (SQLException e) {
throw new IllegalStateException(e);
}
}
}
org.assertj.core.api
package hello.jdbc.connection;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import java.sql.Connection;
@Slf4j
class DBConnectionUtilTest {
@Test
void connections() {
Connection connection = DBConnectionUtil.getConnection();
Assertions.assertThat(connection).isNotNull();
}
}
테스트 코드 실행 결과
11:38:44.762 [Test worker] INFO hello.jdbc.connection.DBConnectionUtil - get connection=conn0: url=jdbc:h2:tcp://localhost/~/test user=SA, class=class org.h2.jdbc.JdbcConnection
JDBC 커넥션 인터페이스와 구현
java.sql.Connection
표준 커넥션 인터페이스를 정의org.h2.jdbc.JdbcConnection
구현체 제공DriverManager
DriverManager 커넥션 요청 흐름
DriverManager.getConnection()
호출DriverManager
는 라이브러리에 등록된 드라이버 목록을 자동 인식jdbc:h2:tcp://localhost/~/test
jdbc:h2
로 시작하면 이것은 h2 데이터베이스에 접근하기 위한 규칙java.sql.Connection
인터페이스를 구현함H2 데이터베이스 드라이버 라이브러리
runtimeOnly 'com.h2database:h2' // h2~.jar