Objektorientierte Datenbanken Beim vorigen Mal: Der Object Data Standard der ODMG-Group Kurz: ODMG-Standard Die POET-Implementierung FastObjects (t7) Heute: Transaktionen, Sperren ODMG-OQL Lernziele: Anwendung und Bewertung des ODMG-Standards Ralf Möller, FH-Wedel
22
Embed
Objektorientierte Datenbanken zBeim vorigen Mal: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung FastObjects (t7)
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Objektorientierte Datenbanken
Beim vorigen Mal: Der Object Data Standard der ODMG-Group
Kurz: ODMG-Standard Die POET-Implementierung FastObjects (t7)
Heute: Transaktionen, Sperren ODMG-OQL
Lernziele: Anwendung und Bewertung des ODMG-Standards
Normalerweise bleiben unter FastObjects-ODMG geänderte Objekte bei Transaktionsabbruch im Hauptspeicher bestehen
Synchronisation mit Hauptspeicherzustand auf Wunsch möglich:...Properties props = new Properties();props.setProperty("restoreOnAbort", true);txn.setProperties(props);...
Sperren (Locks)
Implizite Sperren Vom System vergeben bei Zugriff auf Objekte Bei lookup Anforderung einer Lesesperre Bei Änderung Anforderung einer Schreibsperre Ggf. wartet Kontrollfluß bis Sperre verfügbar
Explizite Sperren Transaction txn = new Transaction(); txn.lock(Object o, int level)
Ggf. Ausnahmebehandlung falls Sperre nicht verfügbar
Beispiel
Database db = new Database();db.open( . . . );Transaction txn = new Transaction( db );Product product = (Product) db.lookup( "The Bug Zapper" );System.out.println( product.getTitle() );// The product object is now locked at the READ level.// This was done automatically by the database// manager.// If you want to ensure that the object is not being// read in another transaction, you can attempt to// obtain a WRITE level lock.try { txn.lock( product, Transaction.WRITE );}catch ( LockNotGrantedException e ) {// the lock was not granted; handle// this as you wish}
Anwendung: Implementierung von Assoziationen
Beispiel: Mitarbeiter leitet Projekt Sei "leitet" eine N:1-Beziehung ohne
Navigationsbeschränkung Einführung von Instanzvariablen "leitet"
mit Collection-Typ in der Klasse Mitarbeiter Einführung einer Instanzvariablen "geleitet-von" mit Typ
Mitarbeiter in der Klasse Projekt Aufgabe: Assoziierung von Mitarbeiter m1 und Projekt p1 Die Instanzen m1 und p1 müssen gesperrt werden, bis
wechselseitige Referenz etabliert Genauer: Die Kollektion als Wert der Instanzvariablen