jdbc란 (Java Database Connectivity)의 줄임말로, java를 통해 데이터베이스에 접근할 수 있게하는 프로그램 API를 말합니다. jdbc를 통해 java프로그램 내에서 query를 통해 DB에서 원하는 정보를 불러오거나 수정, 추가, 삭제할 수 있습니다.
이번 포스팅에서는 oracle driver를 java에 설정하고 db와 접속, query문을 통해 data를 읽어들이기 까지의 절차를 간단하게 설명하겠습니다. 먼저 밑의 그림은 전체적인 db접속부터 데이터를 받기까지 결과를 나타낸 것입니다.
- driver 다운로드 및 lib에 위치 지정
먼저 oracle 서버에서 driver를 다운로드한 lib 파일인 ojdbc6.jar 파일을 \WebContent\WEB-INF\lib에 복사합니다(jsp 실습을 위해서 위와 같은 경로로 설정하였습니다).
- 드라이버 로드
클래스를 jvm 메모리에 로딩하는 과정이 필요합니다. lib 파일에 속한 드라이버 클래스 파일인 OracleDriver.class를 메모리에 로딩합니다(정확한 경로는 oracle.jdbc.driver.OracleDriver).
Class.forName("oracle.jdbc.driver.OracleDriver");
- DB와 연결
Oracle DB와의 연결을 위한 url이 필요한데요. url의 구조는
driver정보:ip번호:port번호:SID의 형태로 이루어져있습니다. 예를들어 localhost이면서 port번호가 5050, sid=xe라 하면
url="jdbc:oracle:thin@localhost:5050:xe";
가 되겠습니다. url을 정했으면 Connection 객체를 통해 DB와 연결을 시도하는데, 이때 DB의 id와 password가 요구되니 미리 계정을 생성하시기 바랍니다.
Connection con= DriverManager.getConnection(url,id,pass);
- 대화하기(Statement, PreparedStatement)
DB와의 연결이 성공했다면 이제 query를 통해 원하는 정보를 불러오도록 하겠습니다. 간단한 sql문을 작성합니다.
저는 "select * from emp"로 설정했습니다. sql을 작성했다면 이제 DB와의 대화를 통해 데이터를 불러오는 과정이 필요합니다. Connection 객체에서 Statement 객체를 생성하여 query를 할 수 있는 매개 객체를 만들 수 있습니다.
Statement stmt= con.createStatement();
이제 Statement 객체를 사용하여 db에 query를 요청할 수 있게 됬습니다. Statement의 excuteQuery()메서드를 통해 query의 수행 결과를 ResultSet을 통해 받게됩니다.
ResultSet rs= stmt.excuteQuery(sql문);
- 결과값 처리
이제 결과값이 저장된 ResultSet 객체를 확인해볼 시간입니다. next()메서드는 다음 row데이터가 있는지 여부를 boolean값으로 반환합니다. 이를 활용하면 while() 반복문으로 데이터를 모두 읽을 때까지 원하는 동작을 수행할 수 있을 것입니다. 위의 sql이 select문이였으므로 데이터를 읽어오는 동작을 수행해보겠습니다. 다음은 특정한 컬럼값인 ename을 읽어올 경우입니다.
while(rs.next()){
rs.getString("ename");
}
마지막으로 db의 수정사항이 있는 경우, con.commit() 또는 con.rollback()를 통해 수정사항을 결정하거나 취소할 수 있습니다.
- VO(Value Object)가공
- 소스코드
'programming > java' 카테고리의 다른 글
[java] 정규 표현식 (0) | 2017.06.01 |
---|---|
[java] StringBuilder, StringBuffer의 차이 (0) | 2017.06.01 |
[java]thread (0) | 2017.06.01 |
[java] Collection (2) | 2017.05.15 |
싱글톤(Singleton) (6) | 2017.05.11 |