Következő Előző Tartalomjegyzék

5. Perzisztencia

A perzisztencia lényege az objektum hierarchia egy részének adatbázisba kimentése, illetve onnan visszatöltése az objektumok számára transzparens módon, vagyis az objektumok ne "vegyék észre", hogy őket kimentették, kiléptek a programból, kikapcsolták a gépet, és csak másnapi visszatöltés után folytatták a futtatásukat.

A flexibilitás megköveteli, hogy többféle modellhez kapcsolható legyen az aspektusunk. Az kétféle modell, amit megkülönböztetünk:

A két módszer kombinálható is. A mentés típusa is többféle lehet, az adatok tárolására szolgálhat adatbázis, vagy flat file, ez a használt weavertől függ.

A perzisztencia leírásához a következő tagekkel egészítjük ki a domain modell leírását:

CLASS
  • PERSISTENCE=PersTipus (A PersTipus lehet "TOPLEVEL", "DOCUMENT", vagy "PART", attól függően, hogy az objektum a globális objektumhalmaz része, egy dokumentum, vagy a dokumentum egy eleme.)
  • OWNER=AttrNev (Meghatározza, hogy melyik attribútum tartalmazza az objektum birtokosát PART típusú osztály esetén.)
  • AUTOADD (Megadhatjuk, hogy az adott osztályba tartozó objektumok mikor válnak a projekt részéve, vagyis perzisztenssé. Azok az objektumok, amik nem részei a projektnek, tranziens objektumok, és nem kerülnek mentésre. Ha az AUTOADD attribútum szerepel a CLASS tagben, akkor az objektumok mindig (a konstruktor futása előtt) a projekt részévé válnak, egyébként a METHOD tagoknál lehet a bekerülésüket meghatározni.)
  • REMOVE=RmTipus (Az határozza meg, hogy mikor kerül ki az objektum a projektből. Az RmTipus lehetséges értékei: "ALWAYS", "AUTO", "MANUAL" (default). ALWAYS esetén az objektum destruktora kiszedi a projektből, AUTO esetén akkor kerül ki, ha nincs egyik TOPLEVEL objektumban sem benne. A MANUAL érték esetén szintén a METHOD tagoknál definiált a viselkedés.)
  • <DBNAME> .. </DBNAME> (DOCUMENT típusú objektumhoz kell. Egy Java nyelvű kódrészletet tartalmaz. A kód értéke meghatározza, hogy az objektum hova mentődjön ki. Flat weaver esetén ez egy filenév, adatbázisos weavernél a tábla neve.)

ATTRIBUTE
  • PERSISTENT (Az objektumnak csak azon változói kerülnek kimentésre, amiknek ez szerepel az tagjükben).

METHOD
  • SAVE=MethodPart (Ezzel az attribútummal kell jelezni, hogy az objektumot/objektumokat menteni kell ezen metódusuk előtt, ill. után. A MethodPart értékei lehetnek "BEFORE" vagy "AFTER".)
  • LOAD=MethodPart (Az objektumot vissza kell tölteni a metódus előtt/után)
  • ADD=MethodPart (Ha az objektumosztálynál nincs AUTOADD, akkor ez a tag deklarálja, hogy az objektum a projekt része lesz a metódus előtt/után)
  • REMOVE=MethodPart (REMOVE="MANUAL" esetén kell)

A perzisztencia leírása meglehetősen egyszerű, kivitelezése viszont munkaigényes. Az összes objektum referenciát le kell cserélni egy objektum azonosítóra, ami perzisztenssé tehető. A perzisztens attribútumok megváltozását követni kell, hogy tudjuk, melyik objektum változott meg. Az objektum azonosítók feloldására szükséges egy objektum manager implementálása is.


Következő Előző Tartalomjegyzék