[JDBC (9) ] Application Properties / JDBCUtil 클래스

Yeonbi_Kim·2024년 7월 21일
post-thumbnail

1. Application Properties :

-파일 위치 : src/main/resources/application.properties
1) resource에 오른쪽 버튼 클릭 new > file 생성하여 아래의 내용을 입력한다.

  • 내용 :
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/jdbc_ex1
id=jdbc_ex1
password=jdbc_ex1
  • 설명 : 1) application.properties 파일은 Spring Boot나 다른 Java 애플리케이션에서 환경 설정을 정의하는 데 사용됨. 데이터베이스 연결 설정도 이 파일에 포함됨.
    2) JDBCUtil 클래스를 더욱 효율적으로 사용하기 위헤 application.properties 파일에 데이터베이스 연결 정보를 넣고, 이를 Properties 클래스를 통해 읽어와 Connection객체를 생성하는 방법을 사용하고 있다.

2. JDBCUtil 클래스:

  • 파일 위치 : src/main/java/org/scoula/jdbc_ex1/common/JDBCUtil.java
  • 설명 : 이 클래스는 데이터베이스 연결과 관련된 반복적인 작업(연결 열기, 닫기 등)을 모듈화하여 코드의 재사용성을 높이고 유지보수를 용이하게 한다.
    즉, 데이터베이스 연결을 관리하는 유틸리티 클래스로, 데이터베이스에 연결하고 종료하는 메서드를 포함하고 있다.

사용하는 이유

  • 유지보수성 :코드의 반복을 줄이고, 데이터베이스 연결과 같은 공통 작업을 한 곳에서 관리할 수 있어 유지보수가 용이합니다.
  • 가독성: application.properties 파일을 통해 설정을 외부화하여 코드의 가독성을 높입니다.
  • 보안: 데이터베이스 접속 정보(아이디, 패스워드)를 코드에서 분리하여 관리함으로써 보안을 강화합니다.

사용절차

1. application.properties 설정:

•	프로젝트의 src/main/resources 디렉토리에 application.properties 파일을 생성합니다.
•	위와 같은 형식으로 데이터베이스 연결 정보를 입력합니다.

2. JDBCUtil 클래스 생성:

•	src/main/java/org/scoula/jdbc_ex/common 디렉토리에 JDBCUtil.java 파일을 생성합니다.
•	아래와 같은 형식으로 클래스를 작성합니다.

JDBCUtil 클래스 개념 및 사용 절차

java

package org.scoula.jdbc_ex1.common;
//패키지 선언.
/* •	개념: 패키지는 클래스를 그룹화하여 관리합니다.
	•	사용법: package 키워드를 사용하여 정의합니다.
	•	이유: 코드를 모듈화하고 유지보수를 용이하게 하기 위해 사용합니다.
	•	유의점: 패키지 구조를 잘 설계하여 코드의 가독성과 관리성을 높입니다. */

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//import문 : 필요한 클래스들을 가져온다. 즉, 다른 패키지의 클래스를 사용하기 위해 임포트.
/* 1) Connection : 데이터베이스 연결을 나타내는 인터페이스.
   2) DriverManager : JDBC 드라이버를 관리하고 데이터베이스 연결을 얻는 클래스.
   3) SQLEXception : SQL 작업에서 발생하는 예외를 나타냄.
   
   
public class JDBCUtil {
//클래스 선언 : 이 클래스는 데이터베이스 연결과 관련된 유틸리티 메서드를 포함.

            static Connection conn = null;
            static {
                    try {
                        Properties properties = new Properties();
 properties.load(JDBCUtil.class.getResourceAsStream("/application.properties"));
                       String driver = properties.getProperty("drover");
                       String url = properties.getProperty("url");
                       String id = properties.getProperty("id");
                       String password = properties.getProperty("password");
                       
                       Class.forName(driver);
                       conn = DriverManager.getConnection(url, id, password);
        } catch (Exception e) {
             e.printStackTrace();
        }
     }
     
     public static Connection getConnection() {
         return conn;
     }
     
     public static void close() {
        try {
            if (conn != null) {
                conn.close();
                conn = null;
            }
        }  catch (SQLException e) {
              e.printStackTrace();
        }
     }
                     
  • 개념 : 정적 블록은 클래스가 처음 로드될 때 한번 실행된다.
  • 사용법 : static 블록 내에 초기화 코드를 작성한다.
  • 이유 : 클래스가 로드될 때 필요한 초기화 작업을 수행하기 위해 사용한다.
  • 유의점 : 초기화 작업이 실패할 경우를 대비하여 예외 처리를 잘 해줘야 한다.
  • 논리적 흐름 : Properties 객체를 사용해 application.properties 파일에서 데이터베이스 연결 정보를 읽어오고, 이를 사용해 JDBC 드라이버를 로드하고 Connection 객체를 생성한다.

3.데이터베이스 연결 및 사용 :

  • 다른 클래스에서 데이터베이스 연결이 필요할 때 JDBCUtil.getConnection()메소드를 호출하여 Connection 객체를 얻는다.
  • 작업이 끝난 후에는 JDBCUtil.close(conn) 메소드를 호출하여 연결을 닫는다.

논리적 흐름

1. 프로퍼티 파일에서 정보 읽기 :

Properties 객체를 사용해 application.properties 파일에서 드라이버, url, 아이디, 패스워드를 읽어온다.

2. 드라이버 로드 :

Class.forName 메서드를 사용하여 JDBC 드라이버를 로드한다.

3. Connection 객체 생성 :

DriverManager.getConnection 메서드를 사용해 데이터베이스와의 연결을 설정하고 Connection 객체를 생성한다.

4. getConnection 메서드 :

생성된 Connection 객체를 반환한다.

5. close 메서드 :

사용이 끝난 Connection 객체를 닫는다.

유의점

프로퍼티 파일의 경로가 정확해야 하고, 필요한 모든 프로퍼티가 잘 정의되어 있어야 한다.
또한, 예외 처리를 철저히 하여 실행 중 발생할수 있는 오류를 잘 처리해야 한다.

사용 이유

데이터베이스 연결 정보를 외부 파일(application.properties)에 저장하여 관리의 용이성을 높이고, 코드에서 하드코딩을 피한다.

0개의 댓글