Lista zadań nr 2

Podstawy JDBC, c.d.

Dane są tabele:

Ksiazka( Sygn INT PK, Autor VARCHAR(50), Tytul VARCHAR(50), IleStron INT )
Czytelnik( Pesel CHAR(11) PK, Imie VARCHAR(20), Nazwisko VARCHAR(40) )
Wypozyczenie(ID INT PK, Sygn INT REF Ksiazka, Pesel CHAR(11) REF Czytelnik, DataOd DATE, DataDo DATE, Oddana BOOL)

Zadania z tej listy należy wykonać wykorzystując język Java. Kod powinien być aplikacją konsolową.

  1. Napisz program, który zrobi porównanie wydajności wielokrotnych wywołań instrukcji INSERT. Należy przetestować zwykłe zapytania, zapytania prekompilowane (prepared), wsady i wywoływanie procedur składowanych (patrz przykłady). Wyniki powinny zostać zaprezentowane w odpowiedniej tabelce.
    [3p]
  2. Napisz program, który sprawdzi szybkość działania obiektów Statement w zależności od sposobu utworzenia. Obiekty należy utworzyć we wszystkich kombinacjach parametrów metody Connection.createStatement(int resultSetType, int resultSetConcurrency), a przetestować należy przeczytanie wszystkich rekordów
    • od początku do końca,
    • od końca do początku,
    • w pseudolosowej, ale powtarzalnej kolejności (kolejność można wczytać do tablicy, tylko należy uważać, że obsługa kolejności nie zaburzyła wyników testów).
    Jeśli któregoś testu nie da się wykonać przy danej kombinacji parametrów metody createStatement, nie należy się tym przejmować — w tabelce z wynikami należy zostawić puste miejsce. Ambitni mogą podjąć się sprawdzenia zużycia pamięci przez obiekty.
    [3p]
  3. Zadaniem jest napisanie dla obiektów wartwy pośredniej w dostępie do bazy danych. Utwórz obiekty Ksiazka i Czytelnik (nie tworzymy obiektu dla Wypozyczenia ze względu na trudności związane z oprogramowaniem relacji klucza obcego — ambitni mogą się tego podjąć). Dodaj do nich następujące składowe:
    • pola reprezentujące kolumny z bazy danych,
    • settery i gettery dla tych pól,
    • konstruktor, który jako parametr bierze „coś”, co pozwoli się potem połączyć z bazą danych i wykonać zapytanie (np. connection string lub obiekt Database z poprzedniej listy zadań),
    • metodę save(), która zapisuje obiekt do bazy (należy obsłużyć sytuację, gdy obiekt o danym ID jest już w bazie),
    • metodę remove(), który usuwa obiekt z bazy danych (analogicznie, trzeba ustalić co robić, gdy obiektu już w bazie danych nie ma),
    • metodę statycznę findAll(), która zwraca listę wszystkich obiektów danego typu (wszystkie rekordy z tabeli).

    [4p]