Java klases veidošana datu bāzē
1. Java klases failu ielāde DB izmantojot loadjava
programmu.
2. Java klases izveidošana ar create java … komandu.
Datu bāzeFails ar Java klases definējumu
CMD vide
loadjava programma
Datu bāzesSQL*PLUS programma
SQL> create java ...
Java klašu ielāde datu bāzē no ārējiem failiem1. Katras Java klases definējums (programmas teksts) tiek DB glabāts kā lietotāja shēmas objekts – Java source.
2. loadjava programma ielādē Java klases tekstu (avota (source) objekts) un veic programmas kompilāciju veidojot Java class objektu.
2
Pārbaude vai Java programmēšanas valodas lietošanas iespējas ir nodrošinātas datu bāzē (vai ir Java virtuālā mašīna (JVM Aurora)
Sākot ar Oracle8i versiju datu bāzes serverī ir iekļauta Java virtualā mašīna, kas ļauj izmantot un veidot serverī Java klases.1
select COUNT(*) from ALL_OBJECTS where OBJECT_TYPE like 'JAVA%';
COUNT(*)------------------- 17493
Ja rezultāts ir 0, jāpalaiž $ORACLE_HOME/javavm/install/initjvm.sql
1 Ken Arnold, James Gosling, David Holmes. The Java Programming Language. Addison-Wesley.David Flanagan. Java in a Nutshell. O'Reilly.Bruce Eckel. Thinking in Java. Prentice Hall.
3
Java klases ielāde datu bāzē no ārēja faila ar LOADJAVA komandu1. Java klases definējuma ierakstīšana F:\Java_piem\Sveiki.java failā.
public class Sveiki {public static void main (String[ ] args) { System.out.println ("Sveiki. Sāksim apgūt valodu Java."); } }
2. Java klases ielādēšana datu bāzē. Var veikt *.java vai *.class faila ielādi.
3. Run (no OS vides jāpalaiž):F:\oracle\product\10.2.0\db_2\BIN\loadjava.bat –u system/janis@dators:1521:BAZE –v –r –t F:\Java_piem\Sveiki.java
option -v enables verbose (izplūdis) mode; option -r compiles uploaded Java source files and resolves external references in the classes; option -t tells loadjava to connect to the database using the client-side JDBC Thin driver.
4
Iegūtā ielādes rezultāta apskate
Izvades formatēšana (SQL*Plus programmai):col OBJECT_NAME format a30;col OBJECT_TYPE format a15;
select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('19-11-2012', 'DD-MM-YYYY');
OBJECT_NAME OBJECT_TYPE STATUS------------------------------ --------------- -------------------------------------------------CREATE$JAVA$LOB$TABLE TABLE VALIDSYS_C005523 INDEX VALIDSYS_LOB0000053075C00002$$ LOB VALIDJAVA$OPTIONS TABLE VALIDSveiki JAVA CLASS VALIDSveiki JAVA SOURCE VALID
5
DB vārdnīcas skata USER_OBJECTS kolonas
Column Datatype NULL Description
OWNER VARCHAR2(30) NOT NULL
Owner of the object
OBJECT_NAME VARCHAR2(30) NOT NULL
Name of the object
SUBOBJECT_NAME VARCHAR2(30) Name of the subobject (for example, partition)
OBJECT_ID NUMBER NOT NULL
Dictionary object number of the object
DATA_OBJECT_ID NUMBER Dictionary object number of the segment that contains the object
Note: OBJECT_ID and DATA_OBJECT_ID display data dictionary metadata. Do not confuse these numbers with the unique 16-byte object identifier (object ID) that the Oracle Database assigns to row objects in object tables in the system.
OBJECT_TYPE VARCHAR2(19) Type of the object (such as TABLE, INDEX)
CREATED DATE NOT NULL
Timestamp for the creation of the object
LAST_DDL_TIME DATE NOT NULL
Timestamp for the last modification of the object resulting from a DDL statement (including grants and revokes)
TIMESTAMP VARCHAR2(20) Timestamp for the specification of the object (character data)
STATUS VARCHAR2(7) Status of the object (VALID, INVALID, or N/A)
TEMPORARY VARCHAR2(1) Whether the object is temporary (the current session can see only data that it placed in this object itself)
GENERATED VARCHAR2(1) Was the name of this object system generated? (Y|N)
SECONDARY VARCHAR2(1) Whether this is a secondary object created by the ODCIIndexCreate method of the Oracle Data Cartridge (Y | N)
6
DB vārdnīcas skata DBA_JAVA_CLASSES kolonas
Column Datatype NULL Description
OWNER VARCHAR2(30) NOT NULL
Owner of the Java class
NAME VARCHAR2(4000) Name of the Java class
MAJOR NUMBER Major version number of the Java class, as defined in the JVM specification
MINOR NUMBER Minor version number of the Java class, as defined in the JVM specification
KIND VARCHAR2(9) Indicates whether the stored object is a Java class (CLASS) or a Java interface (INTERFACE)
ACCESSIBILITY VARCHAR2(6) Accessibility of the Java class
IS_INNER VARCHAR2(3) Indicates whether this Java class is an inner class (YES) or not (NO)
IS_ABSTRACT VARCHAR2(3) Indicates whether this Java class is an abstract class (YES) or not (NO)
IS_FINAL VARCHAR2(3) Indicates whether this Java class is a final class (YES) or not (NO)
IS_DEBUG VARCHAR2(3) Indicates whether this Java class contains debug information (YES) or not (NO)
SOURCE VARCHAR2(4000) Source designation of the Java class
SUPER VARCHAR2(4000) Super class of this Java class
OUTER VARCHAR2(4000) Outer class of this Java class if this Java class is an inner class
7
Datu vārdnīcas skata kolonu noskaidrošana
describe USER_OBJECTS;
Name Null? Type -------------------------------------------------------------------------- OBJECT_NAME VARCHAR2(128) SUBOBJECT_NAME VARCHAR2(30) OBJECT_ID NUMBER DATA_OBJECT_ID NUMBER OBJECT_TYPE VARCHAR2(19) CREATED DATE LAST_DDL_TIME DATE TIMESTAMP VARCHAR2(19) STATUS VARCHAR2(7) TEMPORARY VARCHAR2(1) GENERATED VARCHAR2(1) SECONDARY VARCHAR2(1)
8
Java klases ielāde no faila izmantojot programmu paketi DBMS_JAVA
Ielādei var arī izmantot programmu paketi DBMS_JAVA.
begin dbms_java.loadjava(' … ');end;
call dbms_java.dropjava('...'); // SQL*Plus vidē
9
DB glabājamās Java klases metodes izsaukšana
1. DB glabājamās Java programmas metodes izsaukšanai izmanto PL/SQL procedūru kā metodes izsaukšanas karkasu (call spec). Tas var tikt izveidots kā:
1) augšējā līmeņa (top-level, standalone) funkcija vai procedūra;2) PL/SQL paketes funkcija vai procedūra;3) SQL objekta tipa Member metode.
2. DB glabājamās Java programmas metodes izsaukšanai izmanto Native Java interface, lai tieši grieztos pie DB esošās Java metodes. Java Native Interface (JNI) ir mehānisms (programming framework) kurš ļauj:
1) Java programmai izsaukt funkcija C vai C++ progranmmā;2) C vai C++ programmai izsaukt metodi Java programmā.
Lietojums PL/SQL izsaucošāprocedūra vai funkcija (Call Spec)
Java metode
Datu vārdnīca
Datu bāze
10
Java klases metodes izsaucošās PL/SQL funkcijas izveide un izmantošana
1. Java klase SveikiT : public class SveikiT { public static String Teksts () {return "Sveiki. Sāksim apgūt valodu Java.";}}
2. Java klases ielāde ar LOADJAVA komandu:F:\oracle\product\10.2.0\db_2\BIN\loadjava.bat –u system/janis@dators:1521:BAZE –v –r –t F:\Java_piem\SveikiT.java
3. Iegūto rezultātu apskate:select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('19-11-2012', 'DD-MM-YYYY');
OBJECT_NAME OBJECT_TYPE STATUS------------------------------ --------------- ---------------------------SveikiT JAVA CLASS VALIDSveikiT JAVA SOURCE VALID
4. Java metodi izsaucošās PL/SQL funkcijas izveidošana:create or replace function SVEIKI_TEKSTS return varchar2 as language java name 'SveikiT.Teksts() return java.lang.String';
5. Iegūto rezultātu apskate:select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('19-11-2012', 'DD-MM-YYYY');
OBJECT_NAME OBJECT_TYPE STATUS--------------------------------------------- ----------------------------------SVEIKI_TEKSTS FUNCTION VALIDSveikiT JAVA CLASS VALIDSveikiT JAVA SOURCE VALID
11
6. Datu bāzes un Java buferu inicializācija (SQL*Plus programma):SQL>set serveroutput ON;SQL>call DBMS_JAVA.SET_OUTPUT(2000);
7. Izsaucošās PL\SQL funkcijas aktivēšana ar call izsaukumu:SQL>variable mainigais_1 varchar2(40);SQL> call SVEIKI_TEKSTS() into :mainigais_1;SQL>print mainigais_1;
mainigais_1----------------------------------------------------Sveiki! Sāksim apgūt valodu Java.
8. Izsaucošās PL\SQL funkcijas aktivēšana izmantojot SELECT vaicājumu.
SQL>select SVEIKI_TEKSTS from DUAL;
SVEIKI_TEKSTS----------------------------------------------------Sveiki! Sāksim apgūt valodu Java..
!
12
Ielādētās klases izdzēšana no Datu bāzes ar komandu dropjava
Run (no OS vides jāpalaiž)dropjava -thin -u system/janis@DATORS:1521:BAZE F:\Java_piem\Sveiki.java
Metadatu apskate:
select OBJECT_NAME, OBJECT_TYPE, STATUSfrom USER_OBJECTSwhere CREATED >= TO_DATE('19-11-2012', 'DD-MM-YYYY');
OBJECT_NAME OBJECT_TYPE STATUS-----------------------------------------------------------------SVEIKI_TEKSTS FUNCTION VALID
13
Izmantotās simbolu koda tabulas noteikšana
variable m1 varchar2(50);call DBMS_JAVA.GET_COMPILER_OPTION(NULL, 'encoding') into :m1;print m1;
m1------------------------WINDOWS-1252
14
Java metožu un izsaucošo PL/SQL programmu parametru atbilstībaPiemērs „main” metodes parametru transformācijai
Java main() metodes parametrs String[] var tikt transformēts uz vairākiem CHAR vai VARCHAR2 parametriem.
Faila F:\Atbalss.java saturs:
public class Atbalss { public static void main (String[] args) { for (int i = 0; i < args.length; i++) System.out.println(args[i]); } }
loadjava -u java_liet/janis@DATORS:1521:BAZE –v –r -t F:\Atbalss.java
create or replace procedure ATBALSS ( s1 varchar2, s2 varchar2, s3 varchar2)as language JAVA name 'Atbalss.main(java.lang.String[])';
call ATBALSS('AAA', 'BBB', 'CCC');
Rezultāts:AAABBBCCC
15
Top Related