이 글은 개발 공부하는 "학생"의 글입니다. 참고용으로만 활용해주시길 바랍니다. 혹시 오류를 찾으셨다면 답글달아주시면 정말 감사드리겠습니다:)
공부한 곳 : 김영한 스프링 DB 핵심강의1 -> 정말 이해가 잘갑니다,,강추,,!
오늘은 JDBC 공부한 내용을 직접 코드로 쳐보면서 적용해 보겠습니다. 복습하자면, JDBC는 DB마다 달랐던 커넥션 연결, SQL 전달, 결과 응답을 인터페이스를 하나 두고, 각 DB사 마다 구현체를 만들게 해서 개발자가 JDBC 활용법만 알면 쉽게 DB 연결을 할 수 있도록 하기 위해서 나왔다는 것을 기억해봅시다!
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 = "";
}
// ConnectionConst에 있는 멤버변수들을 정적선언해줌
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 IllegalStatementException(e)
}
}
}
DriverManager.getConnection(..)
을 이용했다.// 정적 선언
import static org.assertj.core.api.Assertions.assertThat;
@Slf4j
class DBConnectionUtilTest {
@Test
void connection() {
Connection connection = DBConnectionUtil.getConnection();
assertThat(connection).isNotNull();
}
}
아래와 같은 결과가 나온다.
DBConnectionUtil - get connection=conn0: url=jdbc:h2:tcp://localhost/~/test
user=SA, class=class org.h2.jdbc.JdbcConnection
conn0: ~ user=SA
가 반환된 connection이다.class org.h2.jdbc.JdbcConnection
임을 확인할 수 있다.java.sql.Connection
인터페이스를 H2전용으로 구현한 것이다.정리
- JDBC는
java.sql.Connection
표준 커넥션 인터페이스를 정의한다.- 각 DB마다 해당 인터페이스를 구현한 구현체가 존재하며, Driver를 라이브러리로 받아서 활용할 수 있다.
-> 위의 경우,org.h2.jdbc.JdbcConnetion
이 그 구현체이다.