JDBC Class DriverManager, 클래스 나누기, 클래스 라이브러리화

Lee Yong Seok·2022년 6월 2일
0
post-thumbnail

🚗 Java API Documentation(Class DriverManager)

https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/DriverManager.html

🚓 1단계 DriverManager()로 Driver Loading

[Class.forname()]

[DriverManager()]

DriverManager.registerDriver(Driver driver)

https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/DriverManager.html#registerDriver(java.sql.Driver)

🚕 2단계 Connection

getConnection(String url, String user, String password)

https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/DriverManager.html#getConnection(java.lang.String,java.lang.String,java.lang.String)

🛺 3단계 Statement 객체 생성

🚙 4단계 SQL 전송

🚌 5단계 결과값 받기

🚐 6단계 자원 반납

🚎 실행

🚑 클래스 나누기

DBClose.java

  • 다른 클래스에서 주소를 사용하지않고 접근하기 위해 static 키워드를 사용한다.
  • 자원 반납을 할 때, conn만 할수도있고, stmt까지 할수도있고, rs까지 모두다 할 수 있기때문에 3가지의 경우의 자원반납을 모두 코딩한다.
  • 현재 같은 패키지안이기때문에 default 접근제어자로 해도 되지만, 나중에 다른 패키지 또는 그 외에 상황에서 접근을 하기위해 public으로 지정한다.

JdbcDemo1.java

  • JdbcDemo1 클래스에 있던 Close() 메서드를 DBClose.java 클래스로 이동했기때문에 이제 자신의 클래스의 메서드가 아닌 DBClose.java 에 접근하여 Close() 메서드를 참조해야하기때문에 jd.Close()이 아닌 DBClose.Close()로 코드가 바뀌게된다.

[클래스 나누기 전]

[클래스 나눈 후]

[DBClose.java]

[JdbcDemo1.java]

🚒 DBConnection.java

  • Driver Loading && Connection 을 담당하는 클래스 생성

🚚 1, 2, 3, 6단계

  • 1, 2단계(Driver Loading && Connection)은 DBConnection 클래스의 getConnection() 메서드를 참조한다.

🚛 4단계 SQL 전송

  • SQL 전송하기위해 ResultSet 객체를 생성하고 쿼리문을 담는다.
  • ResultSet 객체도 나중에 사용하고 자원 반납을 하기위해 ResultSet의 변수 rs를 Close()에 추가한다.

🚜 5단계 결과 처리

🚘 실행

🚔 INSERT 1, 2, 6단계

🚖 3, 4단계

🚍 6단계 수정

  • 자원 반납 순서는 사용한 순서의 역순이므로, stmt를 반납한 후, conn을 반납한다.

🦽 DBConnection.java, DBClose.java 라이브러리화

1단계 Driver Loading & Connection 을 위한 파일 생성 및 코드 작성

  • 파일 확장자가 .properties 이다.(기억하기❗❗)

  • 접속하려는 머신의 ip주소, 그리고 데이터베이스명, 유저명, 패스워드는 변동적이기때문에 그때그때 수정해서 사용하면 된다.

2단계 dbinfo.properties 불러오기

  • dbinfo.properties의 상대위치를 확인하여 File(상대경로)에 적어준다.
  • 에러발생시 예외처리로 인해 getMessage()로 파일을 못찾는건지, 아니면 로드에 실패한건지 알 수 있다.

3단계 DBConnection2.java에 getConnection() 추가

4단계 com.example 패키지 추가 및 DBClose.java, DBConnection2.java 이동

  • 패키지를 이동했으니, DBConnection2.java를 DBConnection.java로 이름 변경

5단계 DBConnection.java 수정

  • dbinfo.properties 를 path 변수로 받기 위해 수정(그때그때 바뀐 경로를 바로 사용하기 위함)

6단계 path 경로를 직접 입력해서 넣어주면 되도록 dbinfo.properties 파일을 인자로 보낸다.

7단계 Windows의 절대 경로로 path값을 넣어줘도 되는지 확인

8단계 C드라이브 아래 Temp 폴더에 dbinfo.properies 파일 이동(찾기 쉬운곳으로 옮기기)

  • 절대경로도 C:/JdbcReview/0604/dbinfo.properties에서 C:/Temp/dbinfo.properties로 변경

DBClose.java 파일과 DBConnection 파일을 라이브러리화 하기위해 Temp 폴더에 com 폴더채로 이동

9-1단계 C:/Temp 로 이동하여 현재 디렉터리안에 있는 모든 파일을 확인한다.

9-2단계 DBConnection.java 파일과 DBClose.java 파일 압축

  • 아래 화면은 jdk의 위치를 윈도우에서 찾고있지못하여 jar 명령어를 사용할 수 없다.(환경 변수에 가서 jdk의 경로를 잡아줘야한다.

  • 시스템 속성 > 고급 > 환경 변수 > 시스템 변수 > JAVA_HOME의 변수 값을 jdk의 위치로 변경한다.(환경 변수를 변경하고나서 cmd 창을 껐다가 다시 켜야 jar 명령어가 실행된다.)

jar --help 명령어로 jar 의 옵션을 확인한다.

  • 우리는 c,f,v 만 사용하여 jar 파일을 만들기때문에 다른 옵션은 몰라도된다.(필요할때 필요한 옵션을 읽어보고 쓰면 된다.)
  • c : 새로운 jar 패키지 파일을 생성
  • f : c, t, x 옵션에 대해 사용할 jar 파일 이름을 지정
  • v : jar 패키징 도구 수행중 수행 관련 메세지를 출력

jar 명령어를 이용하여 DBConnection.java 파일과 DBClose.java 파일을 jar파일로 만들기

10단계 원래있던 com.example 패키지 통채로 Delete

11-1단계 mydblib.jar 파일 build path 등록

  • Java Project 우클릭하여 Build Path > Configure Build Path.. 클릭

11-2단계 Libraries 탭에서 Classpath 클릭 후 Add External JARs... 클릭

11-3단계 만든 jar파일의 경로로 이동하여 jar 파일을 등록한다.

12단계 com.example Pakage Delete 이후에 jar 파일 추가하여 테스트

  • mydblib.jar로 이렇게 코드를 재활용할 수 있다.(객체지향언어의 특징이자 장점)

🦼 마지막으로 INSERT 해보자.

1, 2, 6단계

3단계

4단계

6단계 수정

실행

profile
Today I Learned 🌙

0개의 댓글