German English

3. Java-Anwendung

Aufgabenstellung

In dieser abschließenden Teilaufgabe des Datenbank-Praktikums dient die in Teil 1 geladene Datenbank als Basis für eine Konsolen-Applikation. Ihre Aufgabe ist die Implementierung einer Applikation in der Programmiersprache Java unter Verwendung von Hibernate, um den Zugriff auf die Datenbank zu ermöglichen. Ziel ist es u.a., Ihnen die Technik von 3-Ebenen-Anwendungen (Frontend/Datensicht, Mittelschicht, Backend/Datenbank) näher zu bringen, Möglichkeiten des datenbankunabhängigen Zugriffs kennenzulernen sowie erweiterte SQL-Konzepte (z.B. Objekt-Relationales-Mapping mittels Hibernate) anzuwenden. Unsere Anwendung wird kein klassisches Frontend im Sinne einer GUI haben, sondern eine einfache Konsolenapplikation darstellen. Dennoch soll diese Anwendung keinen direkten Zugriff auf die Datenbank haben, sondern ein datenbankspezifisches Modul aufrufen, welches von Ihnen definierte Schnittstellen (Interfaces) implementiert und somit als Mittelschicht den Zugriff auf die Datenbank realisiert. Die Konsolenapplikation bietet eine externe Sicht, um auf die Daten über die Mittelschicht zuzugreifen.

Folgende Teilaufgaben sind für das Bestehen des dritten Testats zu lösen:

1) Objekt-relationales Mapping: Für die Applikation sollen Sie zunächst das Schema Ihrer Datenbank in ein objektorientiertes Modell überführen und die entsprechenden Java-Klassen implementieren. Diese sollen dann mittels Hibernate auf die Datenbanktabellen abgebildet werden. Erstellen Sie dazu das entsprechende objekt-relationale Mapping unter Verwendung von Hibernate Annotations. Beachten Sie dabei folgendes:

  • Vererbung: Beziehen Sie die Vererbungshierarchien City/Country/Continent-[erbt von]->Place und Company/University-[erbt von]->[Organization] in ihr objektorientiertes Modell mit ein. Sie müssen also auch die Klassen Place und Organisation erstellen und die Vererbung im objekt-relationalen Mapping berücksichtigen.
  • Beziehungen: Achten Sie darauf, alle 1:1, 1:N und N:M Beziehungen korrekt auf Ihr objektorientiertes Modell mittels Annotations abzubilden.
  • Assoziationsklassen: Zur Überführung der Beziehungen ‘workAt’ und ‘studyAt’ ist die Verwendung von Assoziationsklassen erforderlich. Für die Überführung weiterer Beziehungen ist die Verwendung von Assoziationsklassen zur Bearbeitung der Praktikumsaufgabe optional.

2) Applikation: Sie sollen eine Konsolenapplikation erstellen, die die unten aufgeführten Funktionalitäten umfasst. Dabei soll Ihre Applikation Daten NICHT direkt mittels JDBC und SQL aus der Datenbank abfragen, sondern die durch Hibernate gebotenen Möglichkeiten nutzen (z.B. Getter/Setter Methoden, HQL). Ferner soll bei jedem Methodenaufruf auf die Daten der Datenbank zurückgegriffen werden. Für die Bereitstellung der Funktionalitäten sollen das Interface PersonRelatedAPI und StatisticAPI definiert werden, dabei entspricht jede Funktionalität einer Methode. Die Interfaces werden in den Klassen PersonRelatedImpl und StatisticImpl realisiert. Ihre Applikation soll schließlich folgende Funktionalitäten umfassen:

  • Programm-Teil A (personenbezogen PersonRelatedAPI): Die Eingabe soll jeweils die ID einer Person (PersonID) sein. Wenn eine weitere Eingabe erforderlich ist, wird dies im Folgenden explizit angegeben. Es sollen mehrere Funktionalitäten zur Verfügung gestellt werden, die jeweils das folgende Ergebnis (Ausgabe) liefern:

    • Profil getProfile: Ausgabe des Profils einer Person, d.h. alle personenbezogenen Informationen (Name, Geschlecht, Wohnort …)
    • Gemeinsame Interessen getCommonInterestsOfMyFriends: Ausgabe von überlappenden Interessen (tagID+Name) der Person und seiner Freunde. Berücksichtigen Sie dabei ein- und ausgehende Freundschaftsbeziehungen.
    • Überlappende Freundesmengen getCommonFriends: Es soll zunächst die ID einer 2. Person eingegeben werden. Für beide Personen sollen dann die IDs und Namen ihrer gemeinsamen Freunde ausgegeben werden.
    • Ähnlichste Interessen getPersonsWithMostCommonInterests: Aus allen Personen soll die Person (ID+Name) ermittelt werden, die die maximal übereinstimmenden Interessen (absolute Anzahl) mit der eingegebenen Person hat (wobei nicht die Input-Person selbst ausgegeben werden soll).
    • Job-Empfehlung getJobRecommendation: Für die eingegebene Person soll eine Jobempfehlung (Uni oder Firma) erzeugt werden, wobei die empfohlene Uni/Firma in der gleichen Stadt wie die eigene Uni/Firma liegen soll und bereits mindestens ein Freund dort arbeiten soll.
    • Kürzester Pfad zu einer anderen Person getShorthestFriendshipPath: Es soll zunächst die ID (oder der Name) einer 2. Person eingegeben werden. Zu dieser zweiten Person soll der kürzeste Pfad bzgl. der Freundschaftsbeziehungen ermittelt werden. Dazu soll eine StoredProcedure erstellt werden, die via Hibernate aufgerufen wird.
  • Programm-Teil B (Statistik StatisticAPI): Es sollen weiterhin Statistiken über das soziale Netzwerk erzeugt werden.

    • TagClass-Hierarchie getTagClassHierarchy: Es soll die TagClass- Hierarchie in Form einer Taxonomie dargestellt werden, indem eine TagClass durch den Namen und der Ebenennummer dargestellt wird. Darunter folgend sollen alle Kind-TagClass Elemente aufgeführt werden. Verwenden Sie für die Ebenennummerierung folgendenes Schema:
      0 Thing
      0.1 Agent
      0.1.1 Person
      0.1.1.x
      0.1.2 Organisation
      0.2 …
    • Beliebteste Kommentare getPopularComments: Es soll zunächst ein Parameter k eingegeben werden; k entspricht der Mindestanzahl an ‘likes’. Ermitteln Sie alle Kommentare (Angabe ID, Creator Name), deren Anzahl an ‘likes’ größer als k ist.
    • Land mit häufigsten Kommentaren und Posts getMostPostingCountry: Ermitteln Sie das Land, aus welchem insgesamt die größte Anzahl an Posts und Kommentaren stammt.

Weitere Hinweise

siehe Folien

Abgabe vor dem Testat

Bitte setzen Sie sich per E-Mail mit einem Terminvorschlag für Ihr Testat mit Ihrem Betreuer in Verbindung. Bitte geben Sie im Betreff der E-Mail dbprak sowie die Gruppennummer an. Nehmen Sie dabei ihren Gruppenpartner mit ins CC, damit wir mit Reply-All beiden antworten können. Spätestens 24h vor dem 3. Testat müssen Sie Ihrem Betreuer die nachfolgend beschriebenen Dateien zur Verfügung stellen. Melden Sie sich rechtzeitig per Email! Die Datenbank soll den Status nach der Durchführung von Teil 1 haben.

Abzugeben sind:

  • Alle notwendigen Dateien zur Ausführung Ihrer Applikation mit entsprechender Dokumentation.
  • Die Funktionalitäten der Konsolenapplikation werden während des Testats ausgeführt und getestet.

Links

Praktikum