자바 클래스에 유용한 메소드들 만들어서 오라클에 심어놓고(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