JDBC란
자바에서 데이터베이스에 접근하기 위한 표준API이다
JDBC를 통해 자바 애플리케이션은 다양한 관계형 데이터베이스에
접근하고 SQL 쿼리를 실행하며
결과를 처리할 수 있다
public class CreateSql {
public static void main(String[] args) {
//jdbcSetting();
// EMPqueryTest();
jdbcDSetting();
}
public static void jdbcDSetting(){
Properties prop = new Properties();
prop.setProperty("driver","oracle.jdbc.driver.OracleDriver");
prop.setProperty("url","jdbc:oracle:thin:@localhost:1521:xe");
prop.setProperty("username","C##NUSINGHOME");
prop.setProperty("password","1234");
try {
prop.store(new FileOutputStream("resources/driver.properties")
, "JDBC Settings"
);
System.out.println("JDBC 설정 파일 저장 완료");
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
public static void jdbcSetting(){
Properties prop = new Properties();
prop.setProperty("C","CREATE");
prop.setProperty("R","SELECT");
prop.setProperty("U","UPDATE");
prop.setProperty("D","DELETE");
try {
prop.store(new FileOutputStream("resources/driver.properties")
, "JDBC Settings"
);
System.out.println("JDBC 설정 파일 저장 완료");
prop.storeToXML(new FileOutputStream("resources/Nursing_SQL.xml"),
"Nursing Properties"
);
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
public static void EMPqueryTest() {
Properties prop = new Properties();
try {
prop.loadFromXML(new FileInputStream("resources/EMP_query.xml"));
System.out.println( prop.getProperty("selectEmpList") );
System.out.println( prop.getProperty("insertEmp") );
System.out.println( prop.getProperty("deleteEmp") );
System.out.println( prop.getProperty("updateEmp") );
} catch (InvalidPropertiesFormatException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
첫 번째 :
public static void jdbcDSetting(){
Properties prop = new Properties();
prop.setProperty("driver","oracle.jdbc.driver.OracleDriver");
prop.setProperty("url","jdbc:oracle:thin:@localhost:1521:xe");
prop.setProperty("username","C##NUSINGHOME");
prop.setProperty("password","1234");
try {
prop.store(new FileOutputStream("resources/driver.properties")
, "JDBC Settings"
);
System.out.println("JDBC 설정 파일 저장 완료");
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
Properties 클래스 Java에서 설정 정보나 애플리케이션의 구성 정보를
관리하기 위해 사용되는 유틸리티 클래스이다
- 설정 관리의 편리성을 제공하며
환경 설정이나 데이터베이스 연결 정보 같은 외부 설정 파일을 다룰 때 유용하다
Properties 객체는 문자열 형태의 키와 값을 저장한다
* 주요 특징 key와 value 모두 문자열로 제한된다
setProperty 메소드 :
객체에 키 - 값을 설정한다
지정된 키와 값을 Properties 객체에 저장한다
store :
Properties 객체에 저장된 키-값 쌍을 파일에 저장한다
comments을 포함할 수 있다
try {
prop.store(new FileOutputStream("resources/driver.properties")
, "JDBC Settings"
);
파일 출력 스트림으로
해당 프로젝트 내에 있는 resources 폴더 안에
driver.properties 파일에 Properties 객체에 저장된 key와 value를 저장한다
jdbcSetting()
SQL 명령어(CRUD)에 대한 설정 정보를 파일로 저장하는 역할
public static void jdbcSetting(){
Properties prop = new Properties();
prop.setProperty("C","CREATE");
prop.setProperty("R","SELECT");
prop.setProperty("U","UPDATE");
prop.setProperty("D","DELETE");
try {
prop.store(new FileOutputStream("resources/driver.properties")
, "JDBC Settings"
);
System.out.println("JDBC 설정 파일 저장 완료");
prop.storeToXML(new FileOutputStream("resources/Nursing_SQL.xml"),
"Nursing Properties"
);
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
storeToXML() 메소드 :
prop.storeToXML(new FileOutputStream("resources/Nursing_SQL.xml"),
"Nursing Properties"
);
해당 메소드를 통해서 XML 형식의 설정 파일을 생성할 수 있다
위 코드들의 문제점 prop.store의 경우
중복된 코드를 두 메소드에서 사용을하고 있다
불 필요하다
개선된 코드 :
public static void jdbcFullSetting() {
Properties prop = new Properties();
// JDBC 설정
prop.setProperty("driver", "oracle.jdbc.driver.OracleDriver");
prop.setProperty("url", "jdbc:oracle:thin:@localhost:1521:xe");
prop.setProperty("username", "C##NUSINGHOME");
prop.setProperty("password", "1234");
// SQL 명령어 설정
prop.setProperty("C", "CREATE");
prop.setProperty("R", "SELECT");
prop.setProperty("U", "UPDATE");
prop.setProperty("D", "DELETE");
try {
prop.store(new FileOutputStream("resources/driver.properties"), "JDBC and SQL Settings");
System.out.println("JDBC 및 SQL 설정 파일 저장 완료");
prop.storeToXML(new FileOutputStream("resources/Nursing_SQL.xml"), "Nursing Properties");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
기존에 만들었던
두 메소드를 통합을 하고
EmpqureyTest() 메소드 삭제 :
잘 사용 안할거 같음