Praktikum aus Softwareentwicklung 2 Übung 4 – Datenbankzugriff

Werbung
Praktikum aus Softwareentwicklung 2
SS 2010, LVA 365.009
Abgabetermin: 27.4.2010
Erreichbare Punkte: 24
Übung 4 – Datenbankzugriff mit JDBC
Aufgabe: Jukebox
24 Punkte
Eine Mediendatenbank ist mit folgendem Schema gespeichert. Erzeugen Sie die
Tabellen in einem RDBMS (siehe Datei jukebox.sql in Beispiele04.zip):
create table album (
id
integer identity primary key,
name
varchar not null,
interpret varchar,
jahr
integer
);
create table titel (
id
integer identity primary key,
name
varchar not null,
minuten
integer,
gespielt datetime,
albumId
integer,
foreign key (albumId) references album
);
create table wiedergabeliste (
id
integer identity primary key,
name
varchar not null,
version
integer not null
);
create table wliste_titel (
wId
integer not
titelId
integer not
foreign key (wId)
foreign key (titelId)
);
null,
null,
references wiedergabeliste (id),
references titel (id)
Implementieren Sie eine geeignete Schnittstelle für Datenzugriffe und -Änderungen,
verwenden Sie dazu den DAO Pattern in einer vereinfachten Variante (Java Beans +
DAO, keine Factory…):
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Das DAO soll mindestens folgende Operationen unterstützen:
public class JukeBoxDAO {
// Album anlegen und Titel zu Album hinzufügen
public void addAlbum(Album a);
public void addTitel(Album a, Collection<Titel> titel);
// Wiedergabeliste anlegen und Titel zu Liste hinzufügen
public void addWiedergabeliste(Wiedergabeliste wl);
public void addTitel(Wiedergabeliste wl, Collection<Titel> titel);
public void addTitel(Wiedergabeliste wl, Album a);
// Name der Wiedergabeliste ändern
public void rename(Wiedergabeliste wl, String newName)
throws ConcurrentUpdateException;
Seite 1/2
public Playlist getPlaylist(Wiedergabeliste wl);
}
public class Playlist {
private Collection<Titel> titelListe;
private Map<Titel, Album> titel2Album; // album kann auch null sein
…
}
Implementieren Sie für die Methode rename der Wiedergabeliste optimistisches
Locking. Das heißt, für den Fall einer gleichzeitigen Änderung durch einen zweiten
Benutzer, soll eine ConcurrentUpdateException geworfen werden. Verwenden
Sie dazu die Spalte version der Tabelle wiedergabeliste. Dazu muss bei jedem
UPDATE der entsprechenden Wiedergabeliste der Versionszähler (Spalte version)
geprüft werden (in der WHERE-Bedingung) und um 1 erhöht werden. Simulieren Sie
diesen Fall mit einem Testprogramm.
Seite 2/2
Herunterladen