Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001 - PowerPoint PPT Presentation

Java zum zugriff auf datenbanken sqlj mahboubeh pakdaman 15 01 2001
Download
1 / 28

  • 74 Views
  • Uploaded on
  • Presentation posted in: General

1. 1. Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001. 2. 2. Ablauf. Was ist SQLJ? Warum SQLJ? Brauchen wir noch JDBC? Beispiele. Drei Teile der SQLJ-Spizifikation und die Anwendung dieser Konzepte. Fazit. 3. Was ist SQLJ?.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

Download Presentation

Java zum Zugriff auf Datenbanken SQLJ Mahboubeh Pakdaman 15.01.2001

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Java zum zugriff auf datenbanken sqlj mahboubeh pakdaman 15 01 2001

1

1

Java zum Zugriff auf DatenbankenSQLJMahboubeh Pakdaman15.01.2001


Ablauf

2

2

Ablauf

  • Was ist SQLJ?

  • Warum SQLJ?

  • Brauchen wir noch JDBC?

  • Beispiele.

  • Drei Teile der SQLJ-Spizifikation und die Anwendung dieser Konzepte.

  • Fazit.


Was ist sqlj

3

Was ist SQLJ?

  • SQLJ ist eine neue offene Standard Application Programming Interface(API) für die statische Einbettung in Java Programmen.

  • SQLJ ist eine Produktion von Oracle , IBM, Sybase, Tandom, Javasoft , Microsoft , XDB und Informix.


Warum sqlj

4

Warum SQLJ?

  • SQLJ vereinfacht Schreiben , Verwaltung und Debbugging Java Datenbase Applications.

  • SQLJ basiert auf dem Einbettungsprinzip ,d.h. SQL Anweisungen sind zur Übersetzungszeit definiert: 1. Weniger Fehlerträchtig. 2. Mächtiger und mehr vertrauenbar um Codes zu schreiben. 3. Java-Quelltext sind kompakt und besser lesbar.


Brauchen wir noch jdbc

5

Brauchen wir noch JDBC?

  • JA. statische SQL =========> SQLJ dynamische SQL =========> JDBC

  • SQLJ und JDBC sind interoperabil : Man kann die SQLJ und JDBC Anweisungen in ein SQLJ Application benutzen.


Beispiele

6

Beispiele

  • JDBC String name; int id=37115; float salary=2000; PreparedStatement pstm=con.preparedStatement( “SELECT ename FROM emp WHERE empno=? And sal >? ”) ; pstmt.setInt(1,id); pstmt.setFloat(2,salary); ResultSet rs=psmt.executeQuary(); while(rs.next()) { name=rs.getString(1); System.out.println(“Name is :”+name); } rs.close(); psmt.close();

  • SQLJ String name; int id=37115; float salary=2000; #sql {SELECT ename INTO :name FROM emp WHERE empno=:id AND sal> :salary}; System.out.println(“Name is :”+name);


Prinzip von sqlj

7

Prinzip von SQLJ

Data.java

Data.class

Data.sqlj

SQLJ Translator

Java Compiler


Drei teile der sqlj spezifikation und die anwendung dieser konzepte

8

8

Drei Teile der SQLJ-Spezifikation und die Anwendung dieser Konzepte

  • Part 0 : SQLJ Embedded -Die wichtigen SQLJ-Komponenten, -Sqlj-klauseln und HostVariablen/Ausdrücken -Itratoren -Kontexte -Der Sqlj-Translator und Profile

  • Part 1 : SQLJ gesteuerte Prozeduren/Funktionen - Benutzen Java static Funktionen als gesteuerte Prozeduren /Funktionen.

  • Part 2 : SQLJ Datentypen - Nutzung von Java Klassen zur Implementierung von SQL Datentypen.


Part 0 die wichtigen sqlj komponenten

9

Part 0-Die wichtigen SQLJ-Komponenten

  • Der Translator übersetzt ein gegebenes SQLJ-Programm in ein entsprechendes Java-Programm.

  • Das Laufzeitsystem ist im Java-Package sqlj.runtime definiert und besteht aus Menge von Java-Klassen die den Datenbankzugriff realisieren.

  • Ein Customizer ist ein Komponent, das das erzeugte Profil an ein DBMS anpasst.


Sqlj klauseln

10

10

SQLJ-Klauseln

  • Sqlj-Klauseln bilden den Mechanismus zur Einbettung von Sql in Java-Code. Es gibt zwei Formen: 1.Deklarationen von Java-Klassen für Iteratoren und Kontexte sowie 2.Ausführbare Sql-Anweisungen: # sql { SQL-Operationen} ; -Select Anweisungen und Ausdrücken. -Anweisungen zum Auslesen von Daten (select..into,fetch). -Die DML-Operationen(insert, update und delete). -DDL-Operationen(create table). -Aufruf von gespeicherte Prozeduren und Funktionen.


Host variablen ausdr cken

11

11

Host-Variablen/-Ausdrücken

  • Ein Host-Ausdruck ist ein Ausdruck in Java , der in einer SQL-Klausel zum Datenaustausch eingesetzt wird.

  • Kennzeichnung: “:”+(Richtung der Datenübertrag)+Ausdrücken Richtung der Datenübergang (IN,OUT,INOUT): IN Übergang von Java-Werten an die Sql- Anweisungn. OUT Ergebnis der Ausführung der Sql- Anweisung zurück zum Java-Programm. INOUT in beiden Richtungen gleichzeitig.


Beispiele1

12

Beispiele

  • void updateStock ( Sting isbn , int stock )throws Exception{ #sql { UPDATE book SET stock=:stock where isbn=:isbn}; }

  • string findBook (String isbn)throws Exception{ String title; #sql {SELECT title INTO :title FROM book where isbn=:isbn}; }

  • #sql { INSERT INTO book_order VALUES ( :IN (++orderID), :IN custId), :IN(Date.ValueOf(“1999-09-16”)), 0) };

  • #sql price={ VALUES( compute-price(:IN orderNo))};


Iteratoren

13

13

Iteratoren

  • Iterator ist ein Cursor-basierter Mechanismus für den Zugriff auf Mengen von Ergebnistupeln(vergleichbar mit ResultSet von JDBC). Iteratoren sind streng typisiert.

  • Nutzung: 1- Definition der Iterator-Klasse durch eine Sql-Deklaration. 2- Vereinbarung einer Iterator-Variablen. 3- Aufruf der Sql-Anweisung mit Instanziierung eines Iterator-Objekt. 4- Navigation über die Ergebnismenge und Auslesen der Daten. 5- Freigabe der Ressourcen durch Schließen des Iterators.

  • Es gibt zwei Arten von Iteratoren.


Iteratoren1

14

Iteratoren

  • Benannte Iteratoren: Zugriff über die Spaltennamen #sql public iterator Byname( String isbn , String title ); Byname iter; #sql iter={ SELECT isbn , title FROM book }; while( iter.next()){ System.out.println(“isbn=”+iter.isbn()); System.out.println(“title=”+iter.title()); } iter.close();

  • Positionierte Iteratoren:Zugriff über die Host-Variablen #sql iterator ByPos( String, flaot); ByPos iter ; String title; float price; #sql iter={ SELECT title, price From book}; while(true) { #sql{ FETCH : iter INTO :title , : price}; if(iter.endFetch()) break; System.out.println(“title=”+title); System.out.println(“price=”+price); } iter.close();


Verbindungskontexte

15

Verbindungskontexte

  • Eine Datenbankverbindung wird in SQLJ durch einen Verbindungskontext repräsentiert.Es gibt: - Defaultkontext(die einfachsteVerbindungskontext) - Kontextumschaltung(für mehrere Verbindungen). - Kontextqualifizierung. - Kontextklassen ( sie sind insbesondere sinvoll für eine semantische Überprüfung der Sql-Klauseln durch den Sqlj- Translator .)


Der sqlj translator und profile

16

Der SQLJ-Translator und Profile

  • Aufgabe des sqlj-Translators: 1- Ersetzung der Klauseln durch entsprechenden java- Code mit Aufrufen: > sqlj sqljDemo.sqlj 2- Syntaktisch und semantische Überprüfung der Sql- Anweisungen(online und offline), 3- Generierung der Java-Codes für die deklarierten Iteratoren- und Kontextklassen, 4- Erzeugung der Profile.


Profile

17

Profile

  • Sind serialisierte Instanzen mit der “.ser” Endung.

  • werden von dem Translator generiert.

  • enthalten Informationen über die Sql-Operationen über Typ und Übergabeparameter und Ergebnisdaten.

  • Dienen zur Customization.

  • Beispiel


Beispiel

18

Beispiel

  • Sql-Klausel aus klasse SqlDemo: #sql {UPDATE book SET stock=:stock Where isbn=:isbn };

  • Profildatei : profile SqlDemo_SJProfile0 entry 0 #sql { UPDATE book SET stock=? Where isbn =? }; line number :27 PREPARED_STATEMENT executed via EXECUTE_UDATE role is STATEMENT descriptor is null contain 2 parameters : 1.mode : IN , java type : int (int), sql type: INTEGER , name: stock, maker index: 25 2.mode: IN java type: java.lang.String(java.lang.String) , sql tpye: VARCHER , name: isbn, maker index : 50 result set type is NO_RESULT result set name is null contains no result colums


Java complierung

19

Java-Complierung


Part 1 sqlj gespeicherte prozeduren funktionen

20

Part 1: SQLJ gespeicherte Prozeduren/Funktionen

  • Sie sind die Prozeduren /Funktionen , die im Datenbankserver gespeichert und ausgeführt werden Vorteile: 1. lokale Zugriff und zentrale Verwaltung, 2. reduzierte Netzwerkbelastung, 3. gesteigerte Performance, 4. Anwendung von Datenbankdiensten, 5. gesenkte Administrationsaufwand, 6. unabhängig von der Client-Umgebung und im beliebigen Sprachen implementierbar.


Gespeicherte proz mit java

21

Gespeicherte Proz. mit Java


Entwicklung von gespeicherten prozeduren funktionen

Entwicklung von gespeicherten Prozeduren/Funktionen

  • Implementierung : Es ist für einen direkten Datenzugriff mit Sql notwendig.

  • Installation im Server(jar-Archiv): Der Code der Prozedur wird zum Server übertragen.

  • Registrierung(CREATE Prozedur/Funktion): Die Prozedur wird dem Sql-System bekannt gemacht.

  • Aufruf(CALL bzw. VALUES): Die Prozeduren sind von Client-Anwendung nutzbar.


Implementierung

23

Implementierung

  • keine GUI_Funktionen realisierbar,

  • Keine Zugriff auf das Lokale Datensystem ist erlaubt,

  • Nur Default-Verbindung zur lokalen Datenbank,

  • Prozeduren /Funktionen sind als Klassenmethoden zu Implementiert(static-methoden ),

  • Es gibt drei Formen von Prozeduren: 1.no SQL, 2.reads SQL data, 3.modifies SQL data. 4.contains SQL


Beispiel1

24

Beispiel

  • #sql iterator Iter ( double sum); public static double price (int orderNO)throws SQLException { Iter iter; double res=0.0; #sql iter = { SELECT SUM(b.price * oi.num) From order_item oi , book b Where oi.order_id=:orderno AND oi.isbn=b.isbn}; if(iter.next()) res=iter.sum(); return res; }


Installation und registrierung

25

Installation und Registrierung

  • Installation : jar-Archiv CALL sqlj.install_jar ('url' ,' name', deploy)

  • Registrierung : CREATE Procedure sql-Name( SQL-Signature ) SQL-Eigenschaften External NAME Externe-java-Referenz LANGUAGE JAVA PARAMETER STYL JAVA ;


Beispiel2

26

Beispiel

  • Die gespeicherte Prozedur public class Routines { public static double dm2euro ( double val) { return val/1.95583;} }

  • Installation > javac -d . Routines.java. > jar cf routines.jar Routines.class CALL sqlj.install_jar (' file: ~/routines.jar' , 'routines_jar ' , 0);

  • Registrierung CREATE FUNKTION dm2euro ( v FLOAT ) RETURNS FLOAT NO SQL EXTERNAL NAME 'routines_jar:Routines.dm2euro' LANGUAGE JAVA PARAMETER STYLE JAVA;


Java klassen f r benutzer definierte sql datentypen sqlj part 2

27

Java-Klassen für benutzer definierte SQL-Datentypen (SQLJ Part 2)

  • Installation der Java-Klassen im Datenbankserver und deren Nutzung als echte SQL_Datentypen.

  • Implementierung der Schnittstelle java.io.Serializable oder java.sql.SQLData

  • Installation: CALL sql.install_jar( 'url' , ' klass_name ');

  • Registrierung: CREATE.....


Fazit

28

Fazit

  • SQLJ und JDBS arbeiten zusammen, um ein complete Set von Optionen für statische und dynamische SQL anzubieten.

  • SQLJ bringt mehr Produktivität und bessere Qualität mit.

  • SQLJ macht Java viel mehr akzeptabel für viele Business Applikationen.


  • Login