쌍용 강북 교육센터 국비학원 Day 36일차
JDBC 2일차
지난시간에 이어서 다음은 SQL문이 Select문에 where 절을 사용했을 경우의 예제이다.
해당 테이블은 1.글번호, 2.글쓴이, 3.글내용, 4.작성일자 총 4가지 컬럼으로 구성된 테이블이다. sql문 where절에서 컬럼을 선택하듯이 switch문으로 해당컬럼을 선택받는다. 실제 컬럼이름을 변수에 담아서 그대로 사용할 수 있게 대입해준다.
컬럼명마다 where 조건절의 문법이 조금 상이할 수 있으니 컬럼마다 조건에 맞게 if문을 작성해준다.
이하 로직은 어제와 동일하기 때문에 생략.
CallableStatement
CallableStatement 인터페이스는 Connection 객체의 prepardCall () 메소드를 사용해서 객체를 생성한다.
객체는 주로 Stored Procedure 를 사용하기 위해 사용한다. 즉, SQL문의 Procedure를 받는 객체이다. 미리 저장된 쿼리를 사용하기 때문에 수행속도가 빠르다. (Stored Procedure를 단지 호출하는 것만으로 처리가 가능하다)
Stored Procedure 란?
- Query 문을 하나의 파일형태로 만들거나 데이터베이스에 저장해 놓고 함수처럼 호출해서 사용하는 것이다.
- Stored Procedure 를 사용하면 연속되는 query 문에 대해서 매우 빠른 성능을 보이며, 코드의 독립성과 함께 보안적인 장점도 가지게 된다.
(즉, 해당 데이터베이스 SQL문을 저장한것을 말한다.)
다음은 CallableStatement 를 활용한 예제이다.
오라클 서버에는 tbl_class와 tbl_student 의 정보를 출력하는 Procedure (pcd_student_select_one)를 생성해놓았다.
오라클 서버에 생성한 프로시저 pcd_student_select_one 의 매개변수 갯수가 7개 이므로 위치홀더 ( ? ) 를 7개 준다.
다음으로 오라클의 프로시저를 수행 ( executeUpdate( ) ) 하기에 앞서 반드시 해야할 일은 IN mode 로 되어진 파라미터에 값을 넣어주고, OUT mode 로 설정된 곳에 그 결과값을 받아오도록 위와 같이 설정해야 한다.
프로시저의 IN mode로 되어진 파라미터에 값을 넣어줄때는 cstmt.setXXX( ) 메소드를 사용한다.
프로시저의 OUT mode로 되어진 파라미터에 저장되어진 값을 자바에서 꺼내 오려면 cstmt.registerOutParameter() 메소드를 사용한다.
※ registerOutParameter( ) 메소드는?
=> public void registerOutParameter (int parameterIndex, int sqlType) throws SQLException
- 프로시저를 실행하여 받아온 값을 JDBC타입 (자바에서 인식하는 타입)으로 등록시켜주는 메소드이다.
자바에서는 오라클의 OUT mode 변수에 오라클 데이터타입으로 저장되어 있는 값들을 읽어와서 JDBC타입(자바에서 인식하는 타입)으로 변경하는 과정을 거쳐야만 한다. 대표적인 sqlType을 알아보면 NULL, FLOAT, INTEGER, VARCHAR, DATE, CLOB, BLOB 등이 있다.
오늘은 여기까지.