본문 바로가기
JDBC

[JDBC] Properties 응용하기

by Dodledd 2024. 3. 6.

JDBC를 사용해서 DB와 연결하면 DB에 대한 접속 정보가 그대로 노출 될 수 있다.

예를들면 깃허브에 올리거나 공유할때 문제가 생길 수 있어서 xml같은 파일로 접속정보를 꺼내어 따로 보관한다.

오늘은 그 방법에 대해 알아보자

 

방법은 예전에 간단한 통신을 배웠을 때 사용한 Properties를 사용하는 것이다.

 

Properties란?

HashMap의 구버전인 Hashtable을 상속받아 구현된 것으로 둘의 차이점은
Hashtable : (Object, Object) 로 저장하는 반면
Properties : (String, String) 으로 저장하는 단순한 방식이다.

Properties특징 - Map 계열 컬랙션 (key value 세트로 담는다,)-key, value 모두
setProperty(key, value)
getProperty(key) : value

 

우리는 여기에 sql쿼리나 DB접속 정보를 저장할 것이다.

폴더 생성

먼저 오류방지를 위해 내가 저장할 파일이 들어갈 폴더를 만들어준다. (resources)

 

 

 

그리고 간단한 코드로 사용법을 알아보자

Properties prop = new Properties();
prop.setProperty("C", "INSERT"); //테이터 저장
prop.setProperty("R", "SELECT"); //데이터 읽기
prop.setProperty("U", "UPDATE"); //데이터 수정
prop.setProperty("D", "DELETE"); //데이터 삭제

try {
        prop.store(new FileOutputStream("resources/driver.properties"),"properties test" );
        prop.storeToXML(new FileOutputStream("resources/query.xml"), "properties test");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

우리가 예전에 배웠던 IOStream을 이용해서 사용하게 되는데 파일을 내보내는 것 = 즉 만드는 것이 된다

그러므로 FileOutputStream 으로 통로를 만들어주고 경로를 지정해줘서 원하는 파일을 만든다.

주의사항은 try로 예외처리를 반드시 해줘야한다는 점이다. (throw도 된다).

뒤에 들어가는 properties test는 일종의 설명으로 보면 된다.

 

여기까지가 파일 저장하는 방법이다.

 

그럼 저장했으니 불러오는 방법도 알아야하는데

이것도 코드로 알아보자

Properties prop = new Properties();
		
    try {
        prop.load(new FileInputStream("resources/driver.properties"));
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println(prop.getProperty("driver"));
    System.out.println(prop.getProperty("url"));
    System.out.println(prop.getProperty("username"));
    System.out.println(prop.getProperty("password"));

위에서 FileOutputStream을 사용했으니 반대로 읽어들일땐 FileInputStream을 사용하면 된다.

 

(new FileInputStream(" 읽어들일 파일 이름 "))  <-읽어들일 파일 이름에 써주면 된다.

파일을 읽어들일 땐 키와 값으로 저장한다 했었다. (Hashtable의 구조) 

String, String으로 저장하니 prop.getProperty("  ") <- 빈 공간에 내가 key값으로 줬던 문자열을 넣어주면 그에 대한 값을 가져오게 된다.

 

properties test

이건 확장자가 properties인 파일이다. 여기에 key와 value 값으로 오라클 접속 정보를 입력해주고 위 코드를 실행하게 되면

출력결과

잘 출력이 되는 것을 확인할 수 있다.

 

 

 

 

 

 

그냥 JDBC만 배웠을 때 구글을 검색해보면 사람들이 왜 xml 파일로 만들어서 관리할까 생각이 들었는데

막상 해보니까 서버구현할 때 보안상이나 편의상이나 훨씬 좋다는 생각이 들었다.

보안은 파일로 따로 만들어서 컴퓨터에 보관하기 때문에 클라우드에 올리는 것보다는 유출 가능성이 낮고

편의상은 DB접속 정보가 바꼈을 때 매번 모든 코드에 가서 바꿔주지 않아도 된다.

또 서버가 실행중이라고 생각한다면 properties를 사용하지 않은 코드는 우리가 코드를 바꿔도 이미 배포해놓은 상태이기 때문에 적용이 되려면 재배포를 해야한다. 하지만 properties를 사용하여 파일로 따로 빼놓은 경우 사용자가 어떤 기능을 입력해서 FileInputStream으로 파일을 읽어 들일 때 우리가 바꿔놓은 값이 적용되기 때문에 수정도 편리하다는 점이 있다.

 

다음에 개인프로젝트 리팩토링할 때에 모두 바꿔서 적용해보아야겠다.

'JDBC' 카테고리의 다른 글

JDBC 시작 (Java Database Connectivity)  (0) 2024.03.01