ADF-BC Caching

ADF-BC (ehem. BC4J) ist ein Komponentenframework mit eingebauter Persistenzschicht, das unter der Oracle ADF-Familie verwaltet wird. Die Komponenten des gesamten ADF-Frameworks sind in sich abgestimmt und erlaubt je nach gewählter Architektur die freie Zusammenstellung der ADF-Komponenten. Die Verwendung von ADF-BC ist somit innerhalb ADF-Projekten optional. Ein ADF-Projekt kann z.B. auch durch eine Kombination von ADFFaces, ADF-C, TopLink, EJB, Spring aufgebaut sein. Von Interesse ist dabei sets das Zusammenspiel des Transaktions- und Cache-Verhalten.

Innerhalb ADF-BC bilden die Entity-Objekte den Daten-Cache der Persistenzschicht, die folgende Merkmale aufweisen:

  • Der Cache kann nicht abgeschaltet werden
  • Der Cache ist an das ApplicationModule gebunden
  • Pro UserSession wird ein separater Cache erzeugt und vom AppModulePool verwaltet
  • Es können für Stammdaten auch sogenannte Shared AppModule eingesetzt werden
  • Beim Überlauf des JVM-Speichers (AppServer) werden inaktive AppModule-Sessions binär in die DB serialisiert
  • Die Serialisierung des Caches erfolgt binäre in DB-Tabellen (Default), Memory oder File-System
  • Im Cache wird auch die aktuelle Position der Bearbeitung (CurrentRow) gespeichert. Das Ablaufen der User-Session hat deshalb keine negative Auswirkung auf die Daten-Bearbeitung (Mittagspausen ist somit ohne weiters möglich:-).
  • Ein Refresh des Caches kann programatisch durch explizieten Aufruf von API-Methoden beeinflusst werden:
    • setClearCacheOnCommit()
    • setClearCacheOnRolback()
    • entityObject.refresh()
    • row.refresh(flag)
      • Flag - Refresh Strategie
        • REFRESH_WITH_DB_FORGET_CHANGES,
        • REFRESH_WITH_DB_ONLY_IF_UNCHANGED,
        • REFRESH_UNDO_CHANGES
        • Hierachischer Objekt-Refresh: REFRESH_CONTAINEES unter Verwendung des Bit-Operators
    • rowset.executeQuery(): aktualisiert alle Datensäte des aktuellen RowSets. Veränderte Werte bleiben dabei erhalten
    • entity.clearCache()
  • Der ViewObject Cache wird in folgenden Fällen verwendet:
    • Transiente Objekte im ViewObject
    • ReadOnly Querie

Advertisements

~ von bmaier - 10. Dezember 2007.

Kommentar verfassen

Bitte logge dich mit einer dieser Methoden ein, um deinen Kommentar zu veröffentlichen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

 
%d Bloggern gefällt das: