반응형
Java Application 은 Oracle Database Server 에서 실행
. Oracle8i 부터 Java Stored Procedure를 사용할 수 있다.
. Java Application 은 Oracle Database Server 에서 실행 된다.
. Java Stored Procedure는 향상된 Application Performance를 제공한다.
. Java Stored Procedure는 비즈니스 룰의 집중된 시행을 제공한다.
. Oracle의 주요 Java Component는 JVM, JDBC, SQLJ이다.
. Oracle의 Server, OCI, Thin 타입의 JDBC Driver를 제공한다.
. Oracle JVM은 AWT를 지원하지 않는다.
작성 순서
예1)
1. java code 작성
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. 데이터베이스에 자바 클래스 로드
loadjava -user scott/tiger SayHello.class
4.콜 스펙 작성
CREATE OR REPLACE FUNCTION say_hello(name VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA
NAME 'SayHello.say(java.lang.String) return java.lang.String';
5. 실행
SELECT say_hello('안정환') FROM dual;
6.Java Stored Procedure 삭제
DROP FUNCTION say_hello; //오라클
dropjava -user scott/tiger SayHello.class //명령행
예2)
1. JDBC 로 작성된 자바 코드 (OS에서 데이터베이스 접속)
import java.sql.*;
class EmpInfoOS
{
static String dbUrl ="jdbc:oracle:thin:@localhost:1521:orcl";
static String userId = "scott";
static String password = "tiger";
public static void main(String[] args) throws SQLException
{
if(args.length !=1){
System.exit(0);
}
System.out.println(getEmpName(Integer.parseInt(args[0])));
}
public static String getEmpName(int empNo) throws SQLException
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
}catch(ClassNotFoundException cnfe) {
return cnfe.toString();
}
Connection connection = DriverManager.getConnection(dbUrl,userId, password);
Statement statement = connection.createStatement();
String sqlSystax = "SELECT ename FROM emp WHERE empno =" + empNo;
ResultSet rs = statement.executeQuery(sqlSyntax);
String empName = "No data found";
if(rs.next()) empName = rs.getString("ename");
statement.close();
return empName;
}
}
2. 컴파일
javac EmpInfoOS.java
예3)
1. JDBC를 이용한 자바코드 (데이터베이스에서 작동되는 메소드)
import java.sql.*;
class EmpInfoDB
{
public static String getEmpName(int empNo) throws SQLException
{
Connection connection = new oracle.jdbc.driver.OracleDriver().defaultConnection();
Statement statement = connection.createStatement();
String sqlSyntax = "SELECT ename FROM emp Where empno = " + empNo;
ResultSet rs = statement.executeQuery(sqlSyntax);
String empName = "no data found";
if(rs.next()) empName = rs.getString("ename");
statement.close();
return empName;
}
}
2. 컴파일
javac EmpInfoDB.java
3.데이터베이스에 자바 클래스 로드
loadjava -user scott/tiger EmpInfoDB.class
4.콜 스펙 작성
CREATE OR REPLACE FUNCTION getEmpName(v_empno NUMBER) RETURN VARCHAR2 AS LANGUAGE JAVA
NAME 'EmpInfoDB.getEmpName(int) return java.lang.String';
5. 실행
SELECT getEmpName(7369) FROM dual;
관련 Dictionary
user_objects
반응형
'학습자료(~2017) > 오라클' 카테고리의 다른 글
17. 오라클 - SYSTEM PRIVILEGES (0) | 2011.03.29 |
---|---|
16. 오라클 - USER MANAGEMENT, PASSWORD MANAGEMENT (0) | 2011.03.26 |
14. 오라클 - PROCEDURE, FUNCTION & PACKAGE (0) | 2011.03.17 |
13. 오라클 - TRIGGER (7) | 2011.03.17 |
12. 오라클 - SEQUENCE & SYNNYM (0) | 2011.03.16 |