본문 바로가기
Backend/JDBC

JDBC 데이터베이스 접속 정보 분리

by Forsaken Developer 2023. 6. 9.
728x90
728x90

JDBC 데이터베이스 접속 정보 분리

public class Application {
	public void main(String[] args) {
		String driver = "oracle.jdbc.driver.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:xe";
		String user = "C##PCROOM";
		String password = "PCROOM";

		Connection con = null;

		try {
			Class.forName(driver);
			con = DriverManager.getConnection(url, user, password);
			System.out.println(con);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (con != null) {
				try {
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

데이터베이스 접속 정보를 하드코딩하게 되면 일일이 계정 정보를 수정하고 컴파일하고 빌드, 배포를 하는 번거로움이 생기게 된다.
이때  컴파일 되는 파일들을 컴파일 하고 패키징 한 후 컴파일 되지 않는 설정파일만 따로 수정을 해서 컴파일 없이 사용할 수 있다.

하드코딩을 막기위해서 접속에 관한 정보를 properties,xml,yaml 파일로 작성할 수 있다.

#Database Connection Resource
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=C##PCROOM
password=PCROOM

properties파일은 key값과 value값을 '=' 으로 구분하며 작성되는 모든 것들을 문자열로 취급한다.

key-value 세트는 여러개를 저장할 수 있는데 개행문자로 구분한다.

또한 '#'을 통해서 주석을 작성할 수 있다.

public class Application {

	public static void main(String[] args) {
		Properties properties = new Properties();
		Connection con = null;
		
		try {
			properties.load(new FileReader("src/com/forsaken/connection/jdbc-config.properties"));
			
			String driver = properties.getProperty("driver");
			String url = properties.getProperty("url");
			String user = properties.getProperty("user");
			String password = properties.getProperty("password");
			
			System.out.printf("%s %s %s %s\n",driver,url,user,password);
			
			try {
				Class.forName(driver);
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
	        con = DriverManager.getConnection(url,user,password);
			
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if(con!=null) {
				try {
					con.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
		
	}
}

Properties 객체는 map처럼 key-value 형태로 값을 저장하는 타입으로 Hashtable을 상속받아 사용한다.

properties의 load메소드로 FileReader 스트림을 전달하여 properties 파일에 작성한 내용을 불러온다.

이 때 파일의 이름을 찾지 못할 경우, 입출력과 관련된 모든 예외 상황을 대비해서 FileNotFoundException, IoException으로 예외처리한다.

properties의 getProperty메소드에 key값을 넘겨주어 설정정보를 읽어올 수 있다.

 

728x90
반응형

'Backend > JDBC' 카테고리의 다른 글

JDBC DTO의 개념  (0) 2023.06.12
JDBC statement와 resultSet 생성  (0) 2023.06.11
JDBC Template 구현  (0) 2023.06.10
JDBC Connection 생성  (0) 2023.06.08
JDBC의 개념과 설치 방법  (0) 2023.06.07

댓글