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 »

9. Java OQL

Autorzy standardu twierdzą, że wiązanie do Java zapewnia pełna funkcjonalność OQL. To twierdzenie jest mało wiarygodne ze względu na zasadnicze różnice koncepcyjne pomiędzy Java i OQL, powodujące ograniczenia i niewygody.

Możliwości przetwarzania zapytań są zawarte w interfejsie Collection. Metody selectElement, select, query i existsElement posiadają stringowy argument predicate, który jest zapytaniem w OQL (ściślej, jest określony przez składnię klauzuli where). Np. metoda query może być użyta w sposób następujący:

SetOfObject fizycy; 
fizycy = Studenci.query(
           "exists wykl in this.zapisany_na: wykl.nazwa =\"fizyka\" ");

Z ekstensji Studenci klasy Student wybierany jest podzbiór zgodnie z predykatem będącym argumentem metody query. Ten podzbiór jest podstawiany na zadeklarowany obiekt fizycy.

Wiązanie do Java przewiduje specjalną klasę OQLQuery umożliwiającą programiście utworzenie zapytania, przekazanie parametrów do zapytania, wykonanie zapytania oraz przetworzenie jego rezultatu:

class OQLQuery{ 
   public OQLQuery(){} 
   public OQLQuery( String query ){ ... } 
   public create( String query ) { ... } 
   public bind( Object parameter ) { ... } 
   public Object execute() throws ODMGException { ... } 
}

Parametry zapytań musza być obiektami w sensie obiektów Java (np. Integer zamiast int).
Wynik zapytania powinien być także zadeklarowany jako obiekt.
Formalne parametry w zapytaniach są zaznaczone znakiem $i, gdzie i jest numerem parametru.
Parametry aktualne są dostarczane poprzez zastosowanie metody bind; i-ty parametr jest ustalany w i-tym wołaniu metody bind. Wołania tej metody powinny poprzedzić wywołanie metody execute, która dokonuje ewaluacji zapytania.



« poprzedni punkt   następny punkt »