INFO
Sylabus
Standard ODMG, część 7
1. Założenia wiązania do Java
2. Sposoby deklarowania klas z obiektami trwałymi
3. Model obiektowy ODMG w Java
4. Java ODL
5. Java OML
6. Kolekcje
7. Kolekcja Set
8. Transakcje
9. Java OQL
10. Przykład Java OQL
11. Brak niezgodności impedancji?
12. Podsumowanie
Skorowidz
Wyście:
Wyklad XIII. Wprowadzenie do standardu ODMG, część 7:
Wiązanie do Java (KURS SSR)
I II III IV V VI VII VIII IX X XI XII XIII XIV
« poprzedni punkt   następny punkt »

10. Przykład Java OQL

Spośród studentów uczęszczających na przedmiot ”fizyka” należy wybrać Studentów_asystentów, których zarobek jest większy niż 1500, następnie ustalić ich profesorów:
Bag fizycy;        // Obiekt ulotny do przechowania wybranych studentów
Bag profesorowieFizyków; // Obiekt ulotny do przechowania wyniku
Double zarobekJakoObiekt; 
OQLQuery mojeZapytanie; // Deklaracja obiektu do przechowania zapytania
fizycy = Studenci.query( 
            "exists wykl in this.zapisany_na: wykl.nazwa =\"fizyka\" ");
mojeZapytanie = new OQLQuery( 
   "select a.asystuje_w.prowadzony_przez
    from Student_asystent as a 
    where a.zarobek > $1 and a in $2" );
zarobekJakoObiekt = new Double(1500.0);
mojeZapytanie.bind( zarobekJakoObiekt );
mojeZapytanie.bind( fizycy );
profesorowieFizyków = (Bag) mojeZapytanie.execute();


11. Brak niezgodności impedancji?

Patrząc na kod z poprzedniego slajdu, twierdzenie twórców standardu, że unikają oni niezgodności impedancji są niewiarygodne.
Rozwiązanie jest nawet bardziej skomplikowane, niż analogiczne rozwiązanie w SQL.
W istocie, w tym kodzie mamy deklaracje trzech procedur funkcyjnych (perspektyw, views).
Np. takie zadanie mogłoby być zapisane w języku opartym na SBQL/Loqis:

procedure fizycy: SetOf Student 
begin 
     return Student where "fizyka" in (zapisany_na.Wykład.nazwa);
end; 
procedure profesorStudAsyst( minZarobek: real; 
 moiStudenci: SetOf Student): SetOf Profesor 
begin 
    return ((Student_asystent)(moiStudenci where zarobek > minZarobek)).
asystuje_w.Wykład.prowadzony_przez.Profesor; 
end; 
procedure profesorowieFizyków: SetOf Profesor 
begin 
    return profesorStudAsyst (1500; fizycy ); 
end;


« poprzedni punkt   następny punkt »