Prof. Dr. Stephan Kleuker Fachhochschule Osnabrück Fakultät Ing.-Wissenschaften und Informatik - Software-Entwicklung - Komponentenbasierte Software-Entwicklung Wintersemester 2009/10 4. Aufgabenblatt Aufgabe 5 (4 Punkte) Ihre Aufgabe besteht darin, mit einem oder mehreren kleinen Beispielprogrammen die Bedeutung der Parameter der Annotation @Column zu verdeutlichen, insofern ihre Werte einmal true und einmal false sind. Die Annotation bietet u. a. die Parameter nullable, updatable und unique, z. B. @Column(name="Leiter", nullable=false, updatable=true, unique=true). Probieren Sie erfolgreiche und erfolglose Versuche, in Spalten mit diesen Annotationen bestimmte Werte einzutragen oder diese zu ändern. Führen Sie dabei jeden Schritt mit Hilfe eines neuen EntityManager-Objekts em durch und garantieren Sie, dass die Objektänderungen auch in die Datenbank geschrieben werden: em.flush() und em.close(). Aufgabe 6 (4 Punkte) a) Aus den Aufgaben zur Datenbanknutzung ist bekannt, dass Transaktionen möglichst kurz sein sollen, dagegen sollen Sie hier konsequent verstoßen (vgl. Aufgabe 2e) und alle Programmschritte innerhalb einer Transaktion abarbeiten. Schreiben Sie ein minimales Programm basierend auf JPA, bei dem, wenn es mehrfach gestartet wird, passieren kann, dass zwei Transaktionen das gleiche Objekt lokal bearbeiten. Wie verhält sich Ihr Programm, wenn das gleiche Objekt und wenn ein anderes Objekt bearbeitet wird? b) Sichern Sie durch eine Änderung Ihres Programms aus a) zu, dass die Objekte nicht nur lokal, sondern zwischenzeitlich auch auf der Datenbank geändert werden. Nutzen Sie dazu flush(). Welche Beobachtungen machen Sie? c) Führen Sie in Ihrer Entity-Klasse ein zusätzliches Attribut @Version private int version ein. Führen Sie die Experimente aus a) und b) erneut durch. Schreiben Sie jeweils das beobachtete Verhalten auf. Hinweis: Beachten Sie, dass es beim Testen von Programmvarianten meistens notwendig ist, das gesamte Projekte neu zu übersetzen. In Netbeans: Seite 1 von 1