[DB 접근 기술] 데이터베이스 연결

2022. 5. 25. 05:25Database/DB 접근 기술

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1#

 

스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의

백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의

www.inflearn.com

김영한 강사님의 인프런 강의를 수강 후 블로그에 정리해서 포스팅합니다. 


애플리케이션과 데이터베이스를 연결한다.
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 = "";
}

이제 JDBC를 사용해 실제 DB에 연결하는 코드를 작성해보자!

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);
         }
     }
}

데이터베이스에 연결하려면 JDBC가 제공하는 DriverManager.getConnection(..) 를 사용하면 된다.
이렇게 하면 라이브러리에 있는 데이터베이스 드라이버를 찾아서 해당 드라이버가 제공하는 커넥션을 반환해준다.
여기서는 H2 데이터베이스 드라이버가 작동해서 실제 데이터베이스와 커넥션을 맺고 그 결과를 반환해준다.

강의에서는 스프링 프로젝트를 시작할 때, H2 Database Dependencies를 다운로드하여 H2 라이브러리가 존재한다.

해당 라이브러리의 Driver 파일을 통해 Connection을 얻는다.(커넥션을 얻는 방법은 아래에)

이후 커넥션 연결이 잘 되었는지 확인하기 위해 테스트 코드를 작성했다.

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

결과창의

class=class org.h2.jdbc.JdbcConnection

H2 데이터베이스 드라이버가 제공하는 H2 전용 커넥션이다. 물론 JDBC 표준 커넥션 인터페이스인 java.sql.Connection 인터페이스를 구현하고있다.


 JDBC가 제공하는 DriverManager는 라이브러리에 등록된 DB 드라이버들을 관리하고, 커넥션을 획득하는 기능을 수행한다. 

1. 만약 애플리케이션 로직에서 커넥션이 필요하면 DriverManager.getConnection()을 호출한다.
2. DriverManager는 라이브러리에 등록된 드라이버 목록을 자동으로 인식한다. 현재는 H2 라이브러리만 등록되어 있다.
3. 등록된 드라이버들에게 다음의 정보를 넘겨 커넥션을 획득할 수 있는지 확인한다. 
--> 아까 상수로 정의해놓은 URL, Username, Password 정보를 전달한다.
--> 여기서 각각의 드라이버는 URL 정보를 체크해 본인이 처리할 수 있는 요청인지 확인한다. 
예를들어 지금은 URL이 아래와 같은 상수로 저장하였으므로,

public static final String URL = "jdbc:h2:tcp://localhost/~/test"

H2 드라이버가 처리하며 DB에 연결한 후 커넥션을 획득하고 커넥션을 클라이언트에게 반환한다.