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.

www.amaio.com