~~Title: Meta Daten caching steuern~~
Eine Datenbank Anwendung benötigt stets Meta Daten in denen einzelne Spalten definiert und beschrieben werden. Es wird z.B. festgelegt welche Spalte der Primärschlüssel ist, von welchem Datentyp die Spalte ist und ev. auch die Länge und ob die Spalte Null Werte annehmen darf. All diese Informationen werden Meta Daten genannt.
Von JVx werden die Meta Daten vollautomatisch aus der Datenbank übernommen. Dadürch müssen nicht unbedingt Domänenmodelle erstellt werden, hindert aber auch niemanden daran, das zu tun.
Damit das User Interface ordnungsgemäß arbeiten kann, weil z.B in einer numerischen Spalte keine Buchstaben eingegeben werden dürfen, werden auch dort die Meta Daten benötigt. Die Meta Daten müssen also vom Server zum Client übertragen werden. Und das natürlich pro Server Objekt.
Der notwendige Request und natürlich auch die Datenübertragung, nehmen etwas Zeit in Anspruch und im produktiven Betrieb könnte auf diesen Performance Verlust, problemlos verzichtet werden.
Aus diesem Grund gibt es in JVx einen vollautomatischen Meta Daten Cache.
Dieser Cache unterstützt mehrere Modi:
* **Global** \\ Der Cache arbeitet pro VM Instanz, statisch. Je nachdem wie der Cache befüllt wird (dynamisch oder vorbelegt). Im Idealfall ist nur 1 Request für die Meta Daten aller Server Objekte, der gesamten Anwendung, nötig.
* **DataSource** \\ Der Cache ist an eine DataSource gebunden und die Meta Daten alle Server Objekte werden durch 1 Request übertragen. Pro DataSource ist somit 1 Request für die Meta Daten notwendig.
* **Off** \\ Deaktiviert den Meta Daten Cache und pro Server Objekt wird 1 Meta Daten Request benötigt.
Der Cache wird mit folgender Methode konfiguriert:
RemoteDataSource.setMetaDataCacheRole(MetaDataCacheRole);
Der **globale Cache** ist mit folgenden Methoden ansprechbar:
//put meta data to the global cache
RemoteDataSource.putGlobalMetaData(String, MetaData);
//get meta data from the global cache
RemoteDataSource.getGlobalMetaData(String);
Der **DataSource Cache** ist, pro RemoteDataSource Instanz, mit folgenden Methoden ansprechbar:
//put datasource meta data
dataSource.putMetaData(String, MetaData);
//get datasource meta data
dataSource.getMetaData(String);
\\
**Hinweis**
Der Meta Daten Cache wird am Server dynamisch aufgebaut und kontinuierlich aktualisiert. Damit der Cache aufgebaut werden kann, muss nach dem Start des Applikations Servers das User Interface auf die Server Objekte zugreifen.