Proměnné, tabulky symbolů a rozsahy platnosti v Jythonu

Pro připojení k databázovým systémům používá Jython rozhraní JDBC. To vyžaduje pouze vhodný ovladač pro danou databázi. My budeme používat databázi Caché, což je již téměř 30 let velice efektivní databázová technologie vycházející z vícerozměrného uspořádání dat, která nabízí vysoký výkon jak při transakčním zpracování, tak při dotazování. Pod pojmem vícerozměrné uspořádání dat si můžete datové úložiště Caché představit jako stromy nebo adresáře s hierarchickou strukturou. Tato technologie v sobě jedinečným způsobem spojuje jak možnost prezentovat uložená data objektově, tak relačně nebo jako XML dokumenty. Podobně jako Jython, je i Caché nezávislá na operačním systému a nabízí širokou škálovatelnost od jednouživatelských aplikací až po heterogenní síťové aplikace, s nimiž pracují najednou desítky tisíc uživatel hlavních („mission critical“) systémů velkých korporací. Jelikož je Caché primárně aplikačním a databázovým serverem, nemá vlastní prostředky pro tvorbu grafického uživatelského rozhraní.

A tady je právě vidět, že jak Jython tak Caché, pokud se spojí v aplikaci do jednoho celku, dokonale obsáhnou veškerou požadovanou funkčnost, od uživatelského rozhraní (Java), přes vrstvu aplikačního serveru (EJB nebo Caché) až po objektovou persistenci (Caché). Plně funkční jednouživatelskou verzi Caché je možné si stáhnout z webové stránky www.intersystems.com. Její instalace je přímočará a nepotřebuje žádného komentáře.

Abychom se mohli k databázi Caché připojit a pracovat s uloženými objekty ať již objektově nebo pomocí SQL je nutné použít JDBC rozhraní a příslušné ovladače k dané databázi. Tyto ovladače jsou součástí standardní instalace je možné je nalézt ve složce <cache_install>\dev\java\lib\jdk<verze_jdk>. Ovladače jsou součástí balíčku CacheDB.jar. Součástí instalace Caché jsou i definice persistentních tříd, pro které jsou vytvořeny i projekce těchto tříd do jazyka Java. V naší ukázce budeme pracovat s třídou Person, jejíž výpis části zdrojového kódu bude uveden později.

Dříve než začneme pracovat s objekty a daty, musíme se umět připojit k databázi. K tomu vytvoříme funkci connectCache(), která má za úkol vrátit instanci úspěšného spojení. Proměnná url definuje tzv. připojovací řetězec k serveru a databázi. Číslo 1972 definuje port, pomocí kterého se Python k databázi připojuje. SAMPLES je označení jmenného prostoru, do kterého je fyzické úložiště dat (dataset) namapováno:

from
com.intersys.objects import *
from com.intersys import *
from java.lang import *

def connectCache():
	host = "localhost"
	url="jdbc:Cache://" + host + ":1972/SAMPLES"
	username = "_system"
	password = "SYS"	
	dbconnection = CacheDatabase.getDatabase (url,username,password)
	return dbconnection

def printServerInfo(dbconnection):
	info = dbconnection.getServerInfo();
	print "   Connection URL:   " + info.connectionInfo
	print "   Web Server URL:   " + info.webURL
	print "   Cache' version:   " + info.cacheSystemVersion
	print "   Object version:   " + info.cacheObjectVersion
	print "   \tmajor:   ", info.getMajorObjectVersion()
	print "   \tminor:   ", info.getMinorObjectVersion()
	print "   \tbuild major:   ", info.getMajorObjectBuildNumber()
	print "   \tbuild minor:   ", info.getMinorObjectBuildNumber()
	print "   Protocol Server version: ", info.protocolServerVersion
	print "   Namepspace:       " + info.namespace
	print "   Is Unicode?       ", info.isUnicode
	print "   Server locale:    ", info.locale
	print "   Process #         ", info.processNumberString, " (", info.processNumber, ")"
	print "   CacheDB.jar Specification version:  " + Package.getPackage("com.intersys.cache").getSpecificationVersion()
	print "   CacheDB.jar Implementation version:  " + Package.getPackage("com.intersys.cache").getImplementationVersion()
	print "   Java Client build version:  ", VersionInfo.getClientVersion()

if __name__=="__main__":
	dbconnection = connectCache()
	printServerInfo(dbconnection)
	dbconnection.close()

Výsledek výše uvedeného kódu je uveden zde:


>jython CJTest1.py
   Connection URL: jdbc:Cache://localhost:56773/SAMPLES
   Web Server URL: http://127.0.0.1:57773/
   Cache' version: Cache for Windows (x86-32) 2009.1 (Build 401U) Sun Apr 12
2009 17:26:15 EDT
   Object version: 2009.1.0.401
        major:     2009
        minor:     1
        build major: 0
        build minor: 401
   Protocol Server version: 3.14
   Namepspace:       SAMPLES
   Is Unicode?        1
   Server locale:     UTF-8
   Process #:         4284  ( 4284 )
   CacheDB.jar Specification version:  2009.1
   CacheDB.jar Implementation version:  2009.1.0.363
   Java Client build version:   2009.1.0.363

V dalších příkladech již nebudu uvádět funkci connectCache(), ale budu se zaměřovat pouze na samotnou práci s objekty a daty uloženými v databázi. Úplné zdrojové kódy je možné pak na vyžádání zaslat, popřípadě později stáhnout ze stránek InterSystems.

 

V příští ukázce si ukážeme, jak lze jednoduše pracovat s persistentními třídami Caché, a jak použít dotazy SQL s persistentními třídami.