카테고리 없음

자바 개인프로젝트 (1) JDBC 연동 시키기

최종군 2024. 8. 28. 22:30

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() 메소드 삭제 : 
잘 사용 안할거 같음