Java a Caché IV: Manipulace s objekty



Podobné dokumenty
Vyplňte API klíč, který si vygenerujete v Nastavení obchodu v profilu Uloženky v části Nastavit klíč pro API.

Rozšířená nastavení. Kapitola 4

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

V této části manuálu bude popsán postup jak vytvářet a modifikovat stránky v publikačním systému Moris a jak plně využít všech možností systému.

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

4 Část II Základy práce v systému. 6 Část III Úvodní obrazovka. 8 Část IV Práce s přehledy. 13 Část V Kontakty. 19 Část VI Operativa

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

rozlišení obrazovky 1024 x 768 pixelů operační systém Windows 2000, Windows XP, Windows Vista 1 volný sériový port (volitelný) přístup na internet

Příloha č. 2 - Integrace SpiritÚAP do ESB Jihočeského kraje

Nastavení telefonu T-Mobile MDA Touch

Operace nad celými tabulkami

INTERNETOVÝ TRH S POHLEDÁVKAMI. Uživatelská příručka

Tekla Structures Multi-user Mode

Import certifikátů a vytvoření keystore

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

RMI Remote Method Invocation

UŽIVATELSKÁ PŘÍRUČKA PRO INTERNETBANKING PPF banky a.s.

Obsah. Úvod. Martin Moravec

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

ROZCVIČKY. (v nižší verzi může být posunuta grafika a špatně funkční některé odkazy).

Jazyk C++ I. Šablony 3

Databázové a informační systémy

téma: Formuláře v MS Access

Obrázek. Základní popis, zadání úkolu. Struktura tříd,

Zálohování a obnova Uživatelská příručka

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Manuál Kentico CMSDesk pro KDU-ČSL

AutoCAD Architecture 2008

Online travel solutions s.r.o. YONAD.CZ. Uživatelská příručka. Verze červen 2009

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Vodafone promo kit uživatelský manuál Uživatelský manuál pro aplikaci. Vodafone promo kit. Verze dokumentu: 2.

Uživatelská dokumentace

Software IS Řízení stavebních zakázek

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

Programování v Javě I. Leden 2008

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

Programování v Javě I. Únor 2009

Příručka k používání vizualizace

5. Ř etězce (třída String)

Manuál uživatele čipové karty s certifikátem

Vytváření a použití knihoven tříd

UŽIVATELSKÁ PŘÍRUČKA REGISTR CHMELNIC NA EAGRI ZÁKLADNÍ POPIS FUNKCÍ A FORMULÁŘŮ. CCV, s. r. o.

Modul Řízení objednávek.

1. Téma 12 - Textové soubory a výjimky

Kapitola 5 WCF, webové služby a mezidoménové zásady

Abeceda elektronického podpisu

Soubory a databáze. Soubor označuje množinu dat, která jsou kompletní k určitému zpracování a popisují vybrané vlastnosti reálných objektů

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

1. Požadavky na provoz aplikací IISPP

Podrobná uživatelská příručka aplikace Sběr dat pro RIV

2008 Nokia. Všechna práva vyhrazena. Nokia, Nokia Connecting People a Nseries jsou ochranné známky nebo registrované ochranné známky společnosti

Systém elektronického zpracování údajů o výzkumných projektech a jejich hodnocení v GA AV

Typický prvek kolekce pro české řazení

Služby Knihovny AV ČR v oblasti zveřejnění vědeckých publikací (nejen) pro ústavy AV ČR

Tisk, Databázové okno, Editace

Kapitola 1: Co je Delphi 19. Překlad projektu 23

Objektově orientované databáze

Zadání struktury a funkcí interního eshopu

Záloha a obnovení Uživatelská příručka

Popis úlohy. Číslo. cs24601

Testovací aplikace Matematika není věda

Zabezpečení. Uživatelská příručka

Zálohování a obnova Uživatelská příručka

Uživatelské postupy v ISÚI Založení ulice a změna příslušnosti adresního místa k ulici

Příručka poskytovatele Národního geoportálu INSPIRE

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PŘÍLOHA 1.6 SMLOUVY O PŘÍSTUPU K VEŘEJNÉ PEVNÉ KOMUNIKAČNÍ SÍTI LOGISTIKA KONCOVÝCH ZAŘÍZENÍ

Konfigurační soubor *** IES.CFG

Inovované řešení VDT/VT

Zálohování a zotavení Uživatelská příručka

Jednoduchý pomocník pro aplikaci Elektronická příloha č. 2 EP2W EP2 Workspace

OBCHODNÍ PODMÍNKY O NÁKUPU CNG PROSTŘEDNICTVÍM KARET CNGvitall

TRANSFORMACE. Verze 4.0

STANOVISKO č. STAN/1/2006 ze dne

Co poskytuje Czech POINT

Základní informace o Integrovaném informačním portálu MPSV (IIP)

účetních informací státu při přenosu účetního záznamu,

Databáze Caché CSP Custom Tags

Informační systém pro rezervaci pokojů hotelu SPORT

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Microsoft Office Project 2003 Úkoly projektu 1. Začátek práce na projektu 1.1 Nastavení data projektu Plánovat od Datum zahájení Datum dokončení

MINISTERSTVO PRO MÍSTNÍ ROZVOJ UŽIVATELSKÁ PŘÍRUČKA IS KP 14+ PRO INTEGROVANÉ NÁSTROJE: ŽÁDOST O PODPORU STRATEGIE CLLD. Verze: 1.

DPC-D218ID. Dveřní stanice pro 2D systém videovrátných. Uživatelský manuál

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6

Pomocník diabetika Uživatelská příručka

Manuál pro WebRSD. verze 2.0 z

Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/

Uživatelská dokumentace

2N NetSpeaker. IP Audio Systém. Manuál 1.4

Nastavení telefonu Samsung I9195 Galaxy S4 mini

OBEC HORNÍ MĚSTO Spisový řád

KIV/PIA 2013 Jan Tichava

Zařízení má několik částí.

4IT218 Databáze. 4IT218 Databáze

Všeobecné obchodní podmínky Simply Events s.r.o.

Bezpečnostní pokyny. Nepoužívejte tablet v mimořádně studeném nebo horkém, prašném, vlhkém nebo suchém prostředí. Zabraňte pádu zařízení.

Cvičná firma: studijní opora. Brno: Tribun EU 2014, s

Nastavení telefonu PRADA phone by LG 3.0

Transkript:

1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise JavaBeans JavaServer Pages and Servlets JavaServer Faces Struts Spring Web Services Database styl programování vývojová prostředí optimalizace porovnání s jinými jazyky utility příbuzné portály Java a Caché IV: Manipulace s objekty autor: Daniel Kutáč, InterSystems B. V. Ve třetím díle seriálu jsme vytvořili jednoduchou Java třídu, ke které jsme v díle předchozím vytvořili zrcadlový obraz - persistentní Caché třídu. Jak definice Caché třídy vypadá, jsme měli možnost již vidět, nicméně pro nás v tomto okamžiku není její znalost podstatná. S Caché totiž nebudeme pracovat přímo, ale prostřednictvím objektů Javy. A o těchto objektech si dnes budeme povídat. Jalapeno poskytuje několik API objektů pro řízení persistence. Jedním z těchto objektů je aplikační kontext reprezentovaný třídou ApplicationContext (com.intersys.pojo.applicationcontext). Tato třída implementuje různé možnosti připojení k databázi a k získání instance nejdůležitější API třídy - Správce objektů - ObjectManager (com.intersys.pojo.objectmanager). Následující krátký kód ukazuje, jak je možno otevřít spojení s databází a instancovat ObjectManager. String url="jdbc:cache://" + host + ":1972/SYM"; Class.forName ("com.intersys.jdbc.cachedriver"); Connection connection = DriverManager.getConnection (url, username, password); objectmanager = ApplicationContext.createObjectManager (connection); Mimochodem, z příkladu je zřejmé, že připojení ke Caché je realizováno JDBC ovladačem. Ovladač Caché je čistě javovská komponenta, která implementuje jak relační, tak zároveň i objektový přístup k datům uloženým v Caché a ke kódu uloženému formou metod v Caché třídách. Ale o tom opět více v některém budoucím díle. Máme-li instancován objekt ObjectManager, můžeme volat jeho metody pro manipulování s daty na straně Caché. Například můžeme vložit do databáze nový záznam pomocí metody insert. import com.intersystems.objects.*;... faktura f = new faktura();... Id id = (Id)objectManager.insert(f, true); Druhý argument metody říká, zda se má provést důsledné" uložení, tedy zda se mají uložit současně i změny objektů na něž odkazuje právě ukládaný objekt. V našem příkladu faktura ukazuje na objekty polozka, tedy určitě budeme chtít spolu s fakturou uložit i její případné položky. Caché zároveň provede validaci čísla faktury, dle anotace uvedené u třídy ucto.faktura:

2 z 6 11.1.2007 11:13 filosofie software výuka programování @Index(name="cislofakturyIndex", isunique=true, propertynames={"cislofaktury") Následující tabulka podává stručný přehled o několika užitečných metodách správce objektů. RSS zdroje články: RSS 0.92 RSS 2.0 diskuze: RSS 0.92 RSS 2.0 podcast: RSS 0.92 RSS 2.0 další informace Specifikace Návratová hodnota Popis openbyid(class,id) Object Otevírá objekt zadané třídy podle Id v databázi a vrací referenci na něj openbyprimarykey(vlase,primarykey) Object Otevírá instanci zadané třídy podle primárního klíče a vrací referenci na něj openbyquery(vlase,sql,args[]) java.util.iterator Vrací množinu instancí třídy dle zadané SQL podmínky. Na SQL výraz jsou kladeny určité podmínky, jejich popis jde nad rámec tohoto článku attach(object pojo) void Pokud byl objekt připojen ke Caché kopii pomocí např. některé z metod open...(), nebo uložen, či rozpojen, pak se provede připojení. V praxi to znamená, že se vytvoří proxy třída na straně Caché, která provádí změny do databáze. Také to znamená, že hodnoty vlastností třídy jsou z Caché získávány až na vyžádání. detach(object pojo) object Provede odpojení objektu od Caché, tedy od proxy třídy v Caché. To znamená, že veškeré hodnoty vlastností jak samotného objektu, tak objektů provázaných pomocí referencí se přenesou ze serveru Caché do klientské aplikace. Tady ovšem opatrně: může to znamenat někdy velký objem dat a zátěž systému a případně i vést v extrémních případech až k chybě OutOfMemoryError. Klient však má k dispozici data lokálně a nemusí si je vyžadovat nadále ze serveru. Flush void Synchronizuje persistentní kontext s Caché databází Insert(object pojo,boolean deep) Id Vytvoří novou instanci třídy v Caché a zároveň ji uloží. Paramet deep specifikuje způsob uložení - false: pouze samotná třída, true: třída včetně všech otevřených referencí

3 z 6 11.1.2007 11:13 Save(object pojo,boolean deep) Id Vytvoří novou instanci v Caché, nebo aktualizuje existující. Rozhodnutí zda se vytvoří nová instance nebo aktualizuje existující se dělá na základě určitých kritérií, viz. dokumentace ke Caché purgefrommemory(object pojo) void Zruší asociaci mezi Java verzí objektu a proxy třídou v Caché a uzavře proxy třídu na straně Caché. Při použití těsné vazby (o níž opět někdy později...) se zároveň uzavře i Java verze objektu refresh(object pojo) void Provede aktualizaci java objektu dle aktuálního stavu v databázi Caché removeformdatabase(object pojo,id id) void Nalezne odpovídající objet v databázi Caché a vymaže jej. close() void Uzavře správce objektů a zneplatní jej Třída ObjectManager obsahuje též metody pro práci s transakcemi, které zde nebudeme rozebírat, neboť na nich není nic objevného a metody pro instancování dalších objektů Jalapeno API a to jmenovitě Utilities a ExtentManager. ExtentManager Tato Třída poskytuje rozhraní pro práci s oblastmi databází na úrovni celých persistentních tříd, tedy nikoliv na úrovni instancí objektů. Její metody lze použít například pro zrušení definice třídy, smazání všech instancí třídy najednou, přepočítání indexů (toto normálně v Caché není třeba, jen pokud programátor změní definici třídy, je nutno uvést hodnoty indexů s jejich definicemi) apod. V neposlední řadě lze použít metodu pro vygenerování pseudonáhodných instancí tříd; to se hodí zvláště potřebujeme-li otestovat aplikaci na velkém objemu dat, která ovšem ne vždy pro testování máme k dispozici z reálného provozu. ObjectManagerFactory Tato třída poskytuje rozhraní pro správu připojení ke Caché databázi, např. definuje výchozí hodnoty připojení - url, jméno a heslo a jiná nastavení. Settings Tato pomocná třída poskytuje rozhraní pro správu chování třídy ObjectManager. Asi nejdůležitějšími metodami jsou getfetchpolicy a setfetchpolicy. Správné nastavení politiky synchronizace Java klienta se stranou Caché má totiž zásadní vliv na výkon celé aplikace. Caché podporuje dva typy politik pro synchronizaci a to FETCH_POLICY_EAGER a FETCH_POLICY_LAZY. Pokud zvolíte politiku EAGER, pak v okamžiku instancování POJO objektu se automaticky z databáze načtou hodnoty všech vlastností objektu včetně objektů na něž daný objekt odkazuje a to do všech pokolení odkazů. Toto může vést k přenosům velkého objemu dat a v krajním případě k havárii aplikace z důvodu nedostatku paměti. V druhém případě, při použití LAZY politiky, se sice vytvoří instance Java objektu ale hodnoty vlastností se načítají až na vyžádání, při prvním odkazu na ně.

4 z 6 11.1.2007 11:13 Utilities Tato třída implementuje několik metod pro práci s XML dokumenty. Zejména jde o metody pro serializaci do XML a deserializaci z XML do instance POJO objektu. Nyní si konečně můžeme poskládat celý příklad - zde je jeho kód: package ucto; import java.util.*; import java.io.*; public class Main { public Main() { public static void main(string[] args) { String cislofaktury; Random rnd = new Random(); try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Číslo faktury:"); cislofaktury = in.readline(); faktura f = new faktura(); f.polozky = new ArrayList(); f.cislo_faktury = cislofaktury; f.prijemce="jiri Novy"; f.datum_vystaveni= new Date(); polozka p = new polozka(); p.castka = Float.valueOf(rnd.nextInt(1200)); p.popis = "položka číslo 1"; f.polozky.add(p); polozka pp = new polozka(); pp.castka = Float.valueOf(rnd.nextInt(1800)); pp.popis = "položka číslo 2"; f.polozky.add(pp); f.castka = p.castka + pp.castka; System.out.println("Číslo faktury: " + f.cislo_faktury); System.out.println("Částka celkem: " + f.castka); DBservice db = new DBservice(); db.ulozfakturu(f,true); // znicime odkaz na fakturu; f = null; System.out.println("Uloženo!"); // upravime fakturu po jejim nacteni z databaze - zmenime prijemce Iterator faktury = db.fakturadlecisla(cislofaktury); // vime ze bude jen jedna, pokud vubec...

5 z 6 11.1.2007 11:13 if (faktury.hasnext()) { faktura fa = (faktura)faktury.next(); System.out.println("původní příjemce: " + fa.castka); fa.prijemce = "Moje Firma, s.r.o."; System.out.println("částka: " + fa.castka); db.ulozfakturu(fa,false); System.out.println("Stiskni libovolnou klávesu pro dokončení..."); String input = in.readline();; catch (Exception ex) { ex.printstacktrace(); Servisní třída: package ucto; import com.intersys.pojo.*; import java.sql.connection; import java.sql.drivermanager; import java.util.*; import com.intersys.objects.*; public class DBservice { ObjectManager objectmanager = null; /** Creates a new instance of DBservice */ public DBservice() throws Exception { String host = "localhost"; String username="system"; String password="_sys"; String url="jdbc:cache://" + host + ":1972/SAMPLES"; Class.forName("com.intersys.jdbc.CacheDriver"); Connection connection = DriverManager.getConnection (url, username, password); objectmanager = ApplicationContext.createObjectManager(connection); protected void ulozfakturu(faktura f, Boolean nova) throws Exception { Id id = (nova? (Id)objectManager.insert(f, true): (Id)objectManager.save(f, true)); System.out.println("object id: " + id.tostring()); Iterator FakturaDleCisla(String cislofaktury) throws Exception { String[] args = {cislofaktury; return objectmanager.openbyquery(faktura.class, "cislofaktury =?", args); Zkušený programátor mi snad promine styl, zde mi jde jen o ukázku a uvedení některých metod API.

6 z 6 11.1.2007 11:13 Příště nás čeká nová sekce, začneme popisovat spolupráci Caché a Javy z druhé strany, z prostředí Caché. << Předchozí díl seriálu Seznam všech dílů seriálu: Java a Caché I: Úvodem (24.10.2006) Java a Caché II: Práce s Java Anotacemi. (4.12.2006) Java a Caché III: Vytvoření definic Caché tříd pomocí průvodce (4.12.2006) Java a Caché IV: Manipulace s objekty (8.1.2007) autor: Daniel Kutáč, InterSystems B. V. vložil: Cyril Sochor počet přečtení: 71 rubrika: články, blog téma: Database datum publikování: 10.1.2007 datum poslední změny: 10.1.2007 Diskuzní příspěvky Zatím zde nejsou žádné zprávy Přidat nový Zobrazit vybrané Zobrazit všechny Java portál - spravuje www.amaio.com pomocí redakčního systému společnosti MathAn Praha s.r.o. webmaster