Establishing a Connection

2025. 4. 6. 16:48High Level Programming Language/JDBC Database Access

연결 설정 (Establishing a Connection)

먼저, 사용하려는 데이터 소스와의 연결을 설정해야 합니다. 데이터 소스는 DBMS, 레거시 파일 시스템 또는 해당하는 JDBC 드라이버가 존재하는 다른 데이터 원본일 수 있습니다. 일반적으로 JDBC 애플리케이션은 다음 두 클래스 중 하나를 사용하여 대상 데이터 소스에 연결합니다:

DriverManager

  • 완전히 구현된 클래스이며, 애플리케이션을 데이터 소스에 연결합니다.
  • 데이터베이스 URL로 지정된 데이터 소스에 연결합니다.
  • 이 클래스가 처음 연결을 시도할 때, 클래스 경로(class path) 내에 있는 JDBC 4.0 드라이버들을 자동으로 로드합니다.
  • JDBC 4.0 이전 버전의 드라이버는 애플리케이션에서 수동으로 로드해야 합니다.

DataSource

  • DriverManager보다 선호되는 인터페이스입니다.
  • 디폴트 데이터 소스에 대한 세부 정보를 애플리케이션으로부터 분리할 수 있습니다.
  • DataSource 객체의 속성을 설정함으로써 특정 데이터 소스를 나타내게 됩니다.
  • 자세한 내용은 “Connecting with DataSource Objects” 및 Java EE 튜토리얼 참고.

참고: 이 튜토리얼의 샘플에서는 DataSource가 제공하는 기능이 필요하지 않기 때문에, 사용이 더 쉬운 DriverManager를 사용합니다.

 

이 페이지에서 다루는 주제

  • DriverManager 클래스 사용
  • 데이터베이스 연결 URL 지정

 

DriverManager 클래스 사용

DriverManager 클래스를 사용하여 DBMS에 연결하려면, DriverManager.getConnection 메서드를 호출합니다. 다음은 JDBCTutorialUtilities.getConnection 메서드로, 데이터베이스 연결을 설정하는 예시입니다:

public Connection getConnection() throws SQLException {

    Connection conn = null;
    Properties connectionProps = new Properties();
    connectionProps.put("user", this.userName);
    connectionProps.put("password", this.password);

    if (this.dbms.equals("mysql")) {
        conn = DriverManager.getConnection(
                   "jdbc:" + this.dbms + "://" +
                   this.serverName +
                   ":" + this.portNumber + "/",
                   connectionProps);
    } else if (this.dbms.equals("derby")) {
        conn = DriverManager.getConnection(
                   "jdbc:" + this.dbms + ":" +
                   this.dbName +
                   ";create=true",
                   connectionProps);
    }
    System.out.println("Connected to database");
    return conn;
}
  • DriverManager.getConnection 메서드는 데이터베이스 연결을 설정합니다.
  • 이 메서드는 데이터베이스 URL이 필요하며, 이는 사용하는 DBMS에 따라 달라집니다.

예시 URL

  • MySQL: jdbc:mysql://localhost:3306/
    • localhost: 데이터베이스 서버의 호스트 이름
    • 3306: 포트 번호
  • Java DB (Derby): jdbc:derby:testdb;create=true
    • testdb: 연결할 데이터베이스 이름
    • create=true: 데이터베이스가 없을 경우 생성하도록 지시

참고: 이 URL은 Java DB의 임베디드 드라이버를 통해 연결합니다. Java DB는 네트워크 클라이언트 드라이버도 제공하며, 이 경우 URL이 다릅니다.

이 메서드는 DBMS에 접근하기 위한 사용자 이름과 비밀번호를 Properties 객체로 지정합니다.

 

참고: 일반적으로 데이터베이스 URL에서는 연결하고자 하는 데이터베이스 이름을 함께 지정합니다. 예를 들어:

  • jdbc:mysql://localhost:3306/mysql
    mysql이라는 이름의 데이터베이스에 연결


그러나 이 튜토리얼의 샘플에서는 새로운 데이터베이스를 생성하기 때문에 특정 데이터베이스 이름을 명시하지 않습니다.

이전 JDBC 버전의 드라이버 로드 방식

  • JDBC 초기 버전에서는 연결을 얻기 위해 먼저 드라이버를 명시적으로 초기화해야 했습니다:
    Class.forName("com.mysql.cj.jdbc.Driver");
  • 모든 JDBC 드라이버는 java.sql.Driver 인터페이스를 구현하는 클래스를 포함합니다.
  • 예시 드라이버 클래스:
    • Java DB: org.apache.derby.jdbc.EmbeddedDriver, org.apache.derby.jdbc.ClientDriver
    • MySQL: com.mysql.cj.jdbc.Driver
  • JDBC 4.0 이후부터는 클래스 경로에 존재하면 자동으로 로드됩니다. 그 이전 버전에서는 수동 로딩이 필요합니다.

getConnection() 메서드는 Connection 객체를 반환하며, 이는 DBMS 또는 특정 데이터베이스와의 연결을 나타냅니다. 이 객체를 통해 데이터베이스 쿼리를 수행할 수 있습니다.

 

데이터베이스 연결 URL 지정

데이터베이스 연결 URL은 DBMS의 JDBC 드라이버가 데이터베이스에 연결할 때 사용하는 문자열입니다.
URL에는 데이터베이스 위치, 이름, 설정 속성 등의 정보가 포함됩니다.
URL의 구체적인 문법은 사용하는 DBMS에 따라 다릅니다.

 

Java DB 연결 URL 문법

jdbc:derby:[subsubprotocol:][databaseName][;attribute=value]*
  • subsubprotocol: Java DB가 데이터베이스를 찾을 위치 (디렉터리, 메모리, classpath, JAR 파일 등). 일반적으로 생략 가능.
  • databaseName: 연결할 데이터베이스 이름
  • attribute=value: 세미콜론(;)으로 구분된 선택적 속성 목록. 예:
    • 데이터베이스 생성
    • 데이터베이스 암호화
    • 로그/추적 저장 디렉토리 지정
    • 사용자 이름 및 비밀번호 지정

자세한 정보는 Java DB Developer's GuideJava DB Reference Manual 참고

 

MySQL Connector/J URL 문법

jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1=value1][&propertyName2=value2]...
  • host:port: 데이터베이스가 호스팅된 컴퓨터의 호스트명과 포트번호 (기본값: 127.0.0.1:3306)
  • database: 연결할 데이터베이스 이름 (생략 시 기본 데이터베이스 없음)
  • failoverhost: 장애 조치용 예비 데이터베이스 서버 이름
  • propertyName=value: 앰퍼샌드(&)로 구분된 속성들. 예:
    • SSL 설정
    • 문자 인코딩
    • 타임존

자세한 정보는 MySQL Reference Manual 참조

 

출처 : https://docs.oracle.com/javase/tutorial/jdbc/basics/connecting.html

 

Establishing a Connection (The Java™ Tutorials > JDBC Database Access > JDBC Basics)

The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Dev.java for updated tutorials taking advantag

docs.oracle.com

 

 

'High Level Programming Language > JDBC Database Access' 카테고리의 다른 글

Setting Up Tables  (0) 2025.04.06
Handling SQLExceptions  (0) 2025.04.06
Connecting with DataSource Objects  (0) 2025.04.06
Processing SQL Statements with JDBC  (0) 2025.04.06
JDBC : JDBC Introduction  (0) 2024.05.31