OracleDataSource를 사용한 JDBC 기초이론

2009. 6. 23. 17:31 - 에릭투스

JDBC 04번째 강의

 

1.  PreparedStatement

       : 미리 sql문이 세팅된 statement db에 전송되어져서 컴파일되고,

         sql문의 "?"부분만 나중에 세팅해서 실행하는 준비된 Statement

 

    1) 장점

         : 반복적인 똑같은 sql문을 사용할 때 Statement보다 실행속도가 빠르다

          (이유 : ?를 제외한 sql문이 db에서 미리 컴파일 되서 대기하고 있기때문)

      

       2) 단점

         : 서로다른 sql문을 실행하려면 각각 preparedStatement를 생성해줘야한다.

         (Statement는 다른 sql문을 실행할때에 한개만 생성해서 재활용하는 것이가능)

         : stmt.executeQuery(sql) , executeUpdate(sql2);

 

Transaction = commit; , rollback; Savepoint

자동으로 Transaction 안되게 할수도 있다.

*Savepoint : 특정시점을 저장. 그 시점으로 rollback 가능.

 

Like에서 "?" : preparedStatement 사용하기

       개념 : '다리밑' -> ? -> setString("다리밑");

       개념 : '%args%' -> ? -> setString("%"+args[0]+"%");

       or     : '%args%' -> '%'||?||'%' -> setString(args[0]);

 

ResultSet (Cusor) :

       * ResultSet.next(); :다음커서로 이동.

       그외에 많은 기능이 있으나 잘 사용하지 않으므로 Pass!

       Cusor를 마음대로 이동 가능하다.

 

                    1. Before First.

                    2. First.

                    3. Last.

                    4. After Last.

 

 

 

<ResultSet 추가 정리.>

       : 데이터의 수정(참고만.)

                    1) 조건

                    - 단일 테이블에서 select를 해야한다.<, join은 안됨>

                    -  select * 은 안된다.

 

                    2) 생성

                    connection.createStatement

( ResultSet.TYPE_SCROLL_INSENSITIVE,

                                  ResultSet.CONCUR_UPDATABLE);

                    * _updateable에 의해서 수정가능.

 

                    3) 방법

                    API 문서에서 ResultSet 참조.

 

<ResultSet OPTION>

1) static int CONCUR_READ_ONLY

                  : 읽기전용으로 정의.

 

2) static int TYPE_FORWARD_ONLY

                   : 오직 전진만 가능.

Forward_ONLY가 기본값. ( RS.NEXT()만가능)

 

3) static int TYPE_SCROLL_INSENSITIVE

                    : 들 민감한

 

4) static int TYPE_SCROLL_SENSITIVE

                    : 민감한.

 

, 멀티쓰레드 방식일때 사용 하는 부분이지만 초보는 안사용~~~

: 수정가능 : SELECT 할때만 가능.

 

 

 

 

 

<ResultSet Method>

l  absolute() : row 위치로 이동.

l  beforefirst() : 처음으로

l  afterlast(): 마지막으로

l  first() :

l  last() :

l  previous(); 그전 커서로 이동.

*커서를 마음대로 왔다 갔다 할 수 있는 기능.

 

<CONNECTION>

= By default a Connection object is in auto-commit mode

 

l  void setAutoCommit(boolean autoCommit) 

: Sets this connection's auto-commit mode to the given state.

<Auto Commit 해제시> : setAutoCommit(false);

 

 

* 중간에 Exception이 발생시에는 Rollback설정.

       close해도 commit이 되지만 명시적으로 적어주는 것이 더 좋다.

 

 

 

java.sql.Savepoint

: 해당 시점까지의 정보를 저장하는 savepoint 설정

형식 : Savepoint sp = conn.setSavepoint();

rollback(Savepoint); : Savepoint 시점으로 Rollback();

        : so, Savepoint 정의 시점과 rollback사이 값들을 무효화시킴.

 

CallableStatement

 

function - Procedure

function : 리턴값이 있는 것.

procedure : 리턴값이 없는 것.

 

function 복습.

 

CREATE OR REPLACE FUNCTION f_tax_jin

(sal IN number)

RETURN NUMBER

IS

-- 멤버변수 선언.

       v_result NUMBER;

 

BEGIN

-- 메소드 안쪽.

-- 대입연산자 ( := )

       v_result := (sal*12)*0.3; --연봉의 30%세금부여

    RETURN v_result;

END;

 

SELECT f_tax(sal),ename FROM EMP;

 

프로시저 호출..

주로 은행권에서 높은 계급사람들이 하는 일임.

 

CallableStatement

l  CallableStatement : DB상의 plsql을 이요하기위한 Statement입니다.

: function call하는 경우가 별로 없구요. 주로 procedure사용.

: function select문에서 사용.

 

l  CallableStatement : 일반적으로 procedure를 사용하기위한 용도.

 

l  Out prameter register(Type.)해주고 execute뒤에 get을 이용해서

결과를 받을 수 있다.

형식 : {call .}

다른 카테고리의 글 목록

자바 기본 공부/기초 이론 카테고리의 포스트를 톺아봅니다