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 StrategieREFRESH_WITH_DB_FORGET_CHANGES,REFRESH_WITH_DB_ONLY_IF_UNCHANGED,REFRESH_UNDO_CHANGESHierachischer Objekt-Refresh: REFRESH_CONTAINEES unter Verwendung des Bit-Operators
rowset.executeQuery(): aktualisiert alle Datensäte des aktuellen RowSets. Veränderte Werte bleiben dabei erhaltenentity.clearCache()
Der ViewObject Cache wird in folgenden Fällen verwendet:Transiente Objekte im ViewObjectReadOnly Querie

Eine Antwort schreiben
Sie müssen angemeldet sein, um kommentieren zu können.