본문 바로가기

Java For All

자바로 오라클 프로시저 만들기


자바 클래스에 유용한 메소드들 만들어서 오라클에 심어놓고(function.procedure처럼) SQL문에서 함수호출한다.

  procdure를 써야겠지만. 이것도 괜찮은 방법인것 같다..

이름하여 Java Stored Procedure....


* 작업순서

1. 자바코드작성

2. 바이트코드로 컴파일

3. Databae로 Load   --- ?

4. Call Specification 작성 ---?

5. Call Specification을 통함 자바 함수 실행


간단예제A

1.자바코드작성

class SayHello {

    public static void main(String[] args){

    System.out.println(say(args[0]));

    }

    public static String say(String name){

       return "Hello "+ name +"!";

    }

}


2. 바이트코드로 컴파일

>javac SayHello.java


3. Database로 Load

>loadjava -user scott/tiger SayHello.class


4. Call Specification 작성

  CREATE OR REPLACE FUNCTION say_hello(name VARCHAR2) RETURN VARCHAR2

  AS LANGUAGE JAVA

  NAME 'SayHello.say(java.lang.String) return java.lang.String' ;

 /


5. Call Specification을 통함 자바 함수 실행

   SQL>SELECT say_hello('김재영')as result from dual;

  result

--------------------------

Hello 김재영 !


=======================================================

JDBC관련 자바클래스도 마찬가지 입니다.

여러 트랜젝션이 필요한 복잡한 로직의 메소드가 있는 클래스를 만들고

사용하면 유용할것 같죠?

단 Connection 연결은 오라클에서 직접 가져오므로 다음과 같이 하면 됩니다.


Connection con = new oracle.jdbc.driver.OracleDriver().defaultConnetion();


속도는 조금더 빠를것 같습니다.

오라클에 있는 드라이버와 JVM을 사용합니다.


※자바클래스 작성시 원하는 함수를 호출하는 main함수가 존재해야만 합니다.

   즉 예제와 같은 구조로 되어 있어야 함.



참고사이트> 

http://desertwalker.tistory.com/entry/%EC%9E%90%EB%B0%94%EB%A1%9C-%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0