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 |
댓글