V minulém dílu našeho seriálu jsme se seznámili s použitím Caché anotací. Jenom krátká poznámka k minulému dílu; není nutno definovat anotace ke každé vlastnosti nebo ke třídě jako celku, stačí je definovat pouze tam, kde potřebujeme jít nad rámec čistých objektů (např. anotace pro indexy apod.), nebo tam kde chceme systému vnutit jiné nežli výchozí hodnoty.

Dnes si předvedeme, jak přeneseme informace o třídách do Caché.

K vytvoření tříd v Caché můžeme jednak použít průvodce, jednak spustit tvůrce schémat pomocí příkazového řádku. Některá IDE, jako například NetBeans obsahují přímo Jalapeno plugin, takže nemusíme používat příkazový řádek vůbec.

Začněme nejdříve průvodcem. Ten se spouští z príkazové řádky příkazem
java -classpath <cesta ke CacheDB.jar> com.intersys.pojo.tools.SchemaBuilderWizard.

Po spuštění se otevře GUI formulář, do kterého se zadají přihlašovací údaje pro databázi Caché. Těmito údaji jsou IP adresa, port, uživatelský účet a heslo. Stisknutím tlačítka ShowNamespaces se přihlásíme a vybereme příslušný názvový prostor Caché, ve kterém budeme pracovat.

Schema Builder Screenshot

Na následující stránce průvodce zvolíme jako způsob mapování tříd do Caché „Use annotations", ostatní volby ponecháme beze změny a přejdeme na další stránku. Poznámka na okraj, všimněte si ze Caché podporuje též anotace mapovacího nástroje Hibernace, přesněji řečeno, Caché anotace jsou certifikovány jako dialekt Hibernate.

Dále zvolíme, odkud budeme číst třídy, zda z jar či zip archivů nebo zda budeme číst jednotlivé (zkompilované) třídy.

Na další, již poslední stránce průvodce, vybereme příslušné archívy nebo jednotlivé třídy a tlačítkem Generate spustíme vytváření definic tříd v Caché.

Hodnota každého vstupního pole v průvodci se ukládá, s výjimkou hesla, do souboru SchemaBuilder.properties. Odtud jsou hodnoty při spuštění načteny. Při prvním spuštění se tento soubor vytvoří s výchozími hodnotami. Tento textový soubor lze editovat libovolným editorem. Vzorový obsah souboru je zde:

SchemaBuilder.properties
#Thu Oct 26 10:08:31 CEST 2006
com.intersys.schemabuilder.defaultjavaprojectionpackage=
com.intersys.schemabuilder.defaultaccesstype=getters and setters
com.intersys.schemabuilder.classpath=C\:\\Software\\Projects\\Java\\netbeans projects\\ucto\\build\\classes\\
com.intersys.schemabuilder.merge=false
com.intersys.schemabuilder.classes=C\:\\Software\\Projects\\Java\\netbeans projects\\ucto\\build\\classes\\ucto\\polozka.class;C\:\\Software\\Projects\\Java\\netbeans projects\\ucto\\build\\classes\\ucto\\faktura.class
com.intersys.schemabuilder.projectiondir=C\:\\Software\\CacheSys\\Dev\\java\\lib\\JDK15\\.
com.intersys.schemabuilder.source=classes
com.intersys.schemabuilder.exclude=
com.intersys.schemabuilder.rootdir=
com.intersys.schemabuilder.port=1972
com.intersys.schemabuilder.host=localhost
com.intersys.schemabuilder.namespace=USER
com.intersys.schemabuilder.metadata=annotations
com.intersys.schemabuilder.logfile=
com.intersys.schemabuilder.defaultaccesslevel=protected
com.intersys.schemabuilder.user=_SYSTEM
com.intersys.schemabuilder.generationtype=0

Spuštění tvůrce schémat z příkazové řádky se provede takto:

java.exe -classpath <cesta k CacheDB.jar> com.intersys.pojo.tools.SchemaBuilder -f <cesta k souboru s definicemi parametrů>

Nyní si ještě ozřejmíme význam nejdůležitějších parametrů.

Defaultjavaprojectionpackage

Určuje, do jakého balíčku se budou tvořit nové třídy v Caché, výchozí hodnota je „"

Generationtype

Bitmapa určující, zda a jaké typy projekcí se budou z Caché tříd tvořit, výchozí hodnota je 0 - netvoří se žádné projekce z Caché

Projectiondir

V případě, že generationtype parametr specifikuje tvorbu některého z typů projekcí, obsahuje cestu k vygenerovaným souborům

Metadata

Specifikuje, jaký typ metadat se má z definic java tříd použít (default, annotations, hibernate)

Host

IP adresa nebo název serveru Caché

Port

Port na kterém naslouchá Caché

Source

Určuje, z jakého zdroje se mají generovat Caché třídy (classes, jars)

Merge

Určuje, zda ma kompilátor Caché vytvořit novou definici třídy, nebo jen přidat informace k již dříve vytvořené třídě (true, false)

Logfile

Určuje název logovacího souboru pro případné ladění

Pokud do souboru s parametry vložíme řádek com.intersys.schemabuilder.password=<heslo>, nebude se nás pro příště tvůrce ptát na heslo a rovnou se připojí k databázi. Samozřejmě musíme dobře zvážit riziko umístění hesla v otevřené textové podobě do souboru v počítači!

V příštím díle se seznámíme s API Jalapeno knihovny a dokončíme příklad z druhého dílu toto seriálu.