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.