STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ



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

Java a Caché IV: Manipulace s objekty

InterSystems Caché Post-Relational Database

Úvod. Boj se zavlečeným impedančním nesouladem na úrovni databáze

RMI Remote Method Invocation

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

O Apache Derby detailněji. Hynek Mlnařík

COMPARISON OF OBJECT-RELATIONAL MAPPING WITH OBJECT-ORIENTED APPROACH. Jaroslav Ševčík

Semináˇr Java X JDBC Semináˇr Java X p.1/25

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

TÉMATICKÝ OKRUH Softwarové inženýrství

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Dolování v objektových datech. Ivana Rudolfová

Databáze II. 1. přednáška. Helena Palovská

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

Úvod do programovacích jazyků (Java)

(Enterprise) JavaBeans. Lekce 7

RMI - Distribuované objekty v Javě

Programovací jazyk Java

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 26.3.

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

UJO Framework. revoluční architektura beans. verze

KTE / ZPE Informační technologie

Použití databází na Webu

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

SYBASE ADAPTIVE SERVER JAVA V DATABÁZI

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Stěhování aplikací. Michal Tomek, Sales Manager

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Tvorba informačních systémů

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Pokročilé techniky tvorby sestav v Caché. ZENové Reporty

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

Úvod do databázových systémů

Databáze v Java aplikacích, JPA Handout

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Java a XML. 10/26/09 1/7 Java a XML

Konvergence vývoje aplikací a jejich integrování

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

Tvorba informačních systémů

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Výčtový typ strana 67

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

Databáze I. 5. přednáška. Helena Palovská

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

Ukázka knihy z internetového knihkupectví

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Tvorba informačních systémů

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen

Databázové systémy Cvičení 5.2

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

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Generické programování

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

Databáze v MS ACCESS

8.2 Používání a tvorba databází

Remote Method Invocation RMI

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Enterprise Java Beans 3.0

Úvod do Entity Frameworku

Architektura softwarových systémů

Microsoft Office 2003 Souhrnný technický dokument white paper

Tvorba informačních systémů

Projekty pro výuku programování v jazyce Java

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Databázové systémy BIK-DBS

RELAČNÍ DATABÁZE. Cíl:

5 Rekurze a zásobník. Rekurzivní volání metody

KAPITOLA 1 Představení platformy Microsoft SQL Server 2008

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

Přizpůsobení JSTL pro Google App Engine Datastore

Požadavky pro výběrová řízení TerraBus ESB/G2x

Soubor jako posloupnost bytů

Text úlohy. Systémový katalog (DICTIONARY):

SQL - trigger, Databázové modelování

1. Programování proti rozhraní

Vytváření uživatelských datových typů a funkcí v Javě

ŠKOLENÍ PROGRAMOVACÍHO JAZYKA JAVA JAVA - ZÁKLADY

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Distribuované systémy a výpočty

Informační systémy 2006/2007

Java - řazení objektů

Programování a implementace Microsoft SQL Server 2014 databází

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

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

4. lekce Přístup k databázi z vyššího programovacího jazyka

Textové soubory. alg9 1

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Transkript:

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ Technologie Jalapeño od InterSystems Andreas Dieckow, Principal Product Manager, Strategic Planning InterSystems Corporation Úvod Programovací jazyk Java má díky své vlastnosti napiš to jednou a pak implementuj kamkoli mnoho příznivců a uživatelů. Avšak Java je objektově orientovaný jazyk, jehož datové objekty nejsou persistentní. I největší příznivci Javy připustí, že s objektově-relačním mapováním, nutným pro uchovávání javovských objektů v relační databázi, je spousta nezáživné práce. Podle některých odhadů to může zabrat až 60-70 % z celkového úsilí vývojářů. Caché od společnosti InterSystems, stejně jako jiné relační databáze, vždy podporovala JDBC. Ale navíc také nabízela javovským aplikacím objektově-orientovanou persistenci dat. Pro Caché třídy mohou být vytvořeny projekce typu Java proxy tříd nebo Enterprise Java Beans s vysoce výkonnou persistencí, jež je řízena samotnými beany. Tento přístup eliminuje objektově-relační mapování a současně po vývojářích v Javě vyžaduje vytváření datových (tedy persistentních) objektů v Caché ještě před vytvořením projekcí a jejich následným používáním v javovském vývojovém prostředí. Tento článek představuje technologii Jalapeño, která umožňuje přístup spíše Java-in než Caché-out k aplikačnímu vývoji. Pojednává o tom, jak zajistit persistenci starých dobrých javovských objektů známých jako plain old Java objects (POJO) v Caché, popisuje výhody spojené s užíváním objektové technologie pro ukládání dat a uvádí přehled kroků nezbytných k tomu, aby aplikace vytvořená s technologií Jalapeño běžela nad relační databází. Stará dobrá Java a persistence s Caché Co je technologie Jalapeño? Technologie Jalapeño (JAva Language PErsistence with NO mapping) od společnosti InterSystems umožňuje vývojářům v Javě definovat třídy objektů v jakémkoli oblíbeném javovském prostředí a persistentně je uchovávat v Caché. Bez objektově-relačního mapování a bez nutnosti učit se používat Caché Studio. Vysoce výkonné metody přístupu k datovým objektům, které Caché generuje automaticky, existují nezávisle na Java třídě. Vývojáři mohou pracovat s objekty POJO a nemusí se zajímat, jakým mechanizmem jsou data uchovávána.

Persistence Java objektů jako objektů umožňuje při eliminaci objektově-relačního mapování významně zkrátit dobu vývoje. Další výhodou je také lepší výkon, protože není potřeba rozkládat a sestavovat (jinými slovy serializovat či deserializovat) objekty při jejich ukládání i čtení. I když je výhodnější ukládat data jako objekty, najdou se případy, kdy je nutné dotazovat se databáze s použitím SQL buď v Java aplikaci nebo přes analytický a reportingový nástroj třetí strany. Prostřednictvím své Unifikované datové architektury (Unified Data Architecture) Caché automaticky vystavuje data jako relační tabulky. A opět bez mapování. Caché vyhovuje normě JDBC a SQL dotazy mohou sdílet v aplikaci stejné databázové připojení jako metody objektové persistence, jež používá technologie Jalapeño. Použití technologie Jalapeño Vývojář v Javě musí učinit pouze dva kroky, aby zajistil persistenci objektů POJO v Caché. Prvním je vytvoření a zkompilování třídy Caché z definic POJO, druhým použití Jalapeño Object Manageru (dále česky Správce Objektů ) v Java aplikaci. Vytvoření Caché tříd Jalapeño nabízí utilitu Schema Builder, která automaticky vytváří a kompiluje persistentní třídy Caché založené na definicích javovských tříd. (Schema Builder je javovskou třídou zahrnutou v CacheDB.jar.) Vývojáři mohou ovlivňovat způsob, jakým Caché strukturuje objektový model, tím, že vloží anotace do svých definic POJO tříd. Anotace (zavedené v JDK 1.5) neovlivňují chování javovských tříd za běhu programu, pouze poskytují další metadata o požadovaném objektovém modelu Caché. Caché může například z anotace zjistit, že jedna třída dědí z jiné nebo že nad danou vlastností třídy by měl být vytvořen index. Příklady 1A a 1B ukazují jednoduchou definici javovské třídy a třídy Caché, která je z ní odvozena. Povšimněte si, že třída Caché je potomkem třídy poskytnuté společností InterSystems, nazvané %Library.Persistent, a že byl vytvořen index nad vlastností Name. Vývojáři v Javě se nemusí nikdy dívat na třídy Caché vytvořené Schema Builderem ani o nich uvažovat. Pomocí objektů POJO mohou programovat ve svém oblíbeném vývojovém prostředí. Při změně objektového modelu stačí znovu spustit Schema Builder a tyto změny se odrazí v odpovídajících persistentních třídách Caché. Použití Správce Objektů V jiných propojovacích mechanismech Javy a Caché, například při vytváření projekcí Caché tříd jako proxy Java tříd, jsou persistentní metody (zděděné z %Library.Persistent) transformovány do Java přístupových metod. Každá Java třída obsahuje svoji vlastní množinu přístupových metod. Naproti tomu se objekty POJO při použití technologie Jalapeño nemění kvůli přístupovým metodám. Javovská aplikace používá místo toho element zvaný Správce Objektů, jenž navazuje

spojení s databází. Vytváří instance příslušných Caché tříd i přístupové metody, které také spouští. Správce Objektů je Java třída a InterSystems jej dodává jako součást knihovny tříd CacheDB.jar. Kroky které je potřeba pro jeho použití jsou důvěrně známé každému programátorovi v Javě: Zahrňte CacheDB.jar do proměnné CLASSPATH v aplikaci. Importujte balíček pojo. (V CacheDB.jar mohou být také další balíčky, které můžete chtít naimportovat.) Vytvořte instanci třídy Object Manager. Příklad 2 (strana 4) ukazuje vytvoření instance Správce Objektů. Všimněte si, že Správce Objektů navazuje JDBC spojení s databázovým serverem. V Caché mohou objektový i JDBC databázový přístup sdílet stejné spojení. Tím pádem může Správce Objektů využívat vysoce výkonné persistentní metody, ale dotazy na data mohou být také prováděny s pomocí SQL. Příklad 1A Java třída import com.intersys.pojo.annotations.cacheclass; import com.intersys.pojo.annotations.index; @CacheClass(name="Person",primaryKey="ID",sqlTableName="PERSON") @Index(description="Name Index on Person table",name="personindexone",propertynames="name",sqlname="personidx") public class Person public String name; public String ssn; public String telephone; Příklad 1B odpovídající vygenerovaná třída Caché Class User.Person Extends %Library.Persistent [ ClientName = Person, Not ProcedureBlock, SqlTableName = PERSON ] Property name As %Library.String(JAVATYPE = "java.lang.string", MAXLEN = 4096); Property ssn As %Library.String(JAVATYPE = "java.lang.string", MAXLEN = 4096); Property telephone As %Library.String(JAVATYPE = "java.lang.string", MAXLEN = 4096); Index PersonIndexOne On name [ SqlName = PersonIDX ]; XData JavaBlock

<JavaBlock><Package implementation="cacherefactor.cache" pojo="cacherefactor"></package><usesamenames>false</usesamenames><name implementation="person" pojo="person"></name><resolvenamecollisions>false</resolvenamecollisions>< EagerFetchRequired>true</EagerFetchRequired></JavaBlock> Příklad 2 instanciace třídy Správce Objektů public DBService (String[] args) throws Exception String host = "localhost"; String username="_system"; // null for default String password="sys"; // null for default for (int i = 0; i < args.length; i++) if (args[i].equals("-user")) username = args[++i]; else if (args[i].equals("-password")) password = args[++i]; else if (args[i].equals("-host")) host = args[++i]; String url="jdbc:cache://" + host + ":1972/USER"; Class.forName ("com.intersys.jdbc.cachedriver"); Connection connection = DriverManager.getConnection (url, username, password); objectmanager = ApplicationContext.createObjectManager (connection); Implementace nad relační databází Schopnost Správce Objektů ovládat přístup jak k objektovým, tak i k relačním datům nabývá na důležitosti, jestliže Java aplikace vytvořená pomocí technologie Jalapeño vyžaduje implementaci nad relační databází místo nad Caché. Nasazení v relační architektuře je velmi jednoduché a vyžaduje jen dva dodatečné kroky. Nejprve musí být vytvořeno příslušné schéma relační databáze. Caché pro tento případ nabízí exportní utilitu (jako součást CacheDB.jar), jež může vytvořit projekci objektového modelu jako DDL souborů a tu naimportovat do relační databáze. Projekce objektového modelu vznikne odvozením z definic tříd POJO. Nejedná se o stejnou věc jako v případě standardních relačních projekcí Caché, protože objektové schéma v Caché bylo vytvořeno z definic Java tříd. Exportní utilita zná pár věcí o objektech POJO a používá tyto informace při vytváření schématu relačních dat.

Jakmile bylo příslušné relační databázové schéma vytvořeno, stačí jen nakonfigurovat Správce Objektů tak, aby se připojoval k relační databázi namísto Caché. Správce Objektů automaticky použije metody objektové persistence (Open, Save, New, Delete) při připojování ke Caché a metody relační persistence (Select, Update, Insert, Delete) při připojování k relační databázi. Ačkoliv technologie Jalapeño od společnosti InterSystems usnadňuje nasazení javovských aplikací v relačním prostředí, vývojáři velmi rychle zjistí, že aplikace běží rychleji s Caché. Caché totiž nejen že umožňuje vysoce výkonnou objektovou persistenci, ale bylo také dokázáno, že odpovídá na SQL dotazy rychleji než relační databáze a to zvláště na ty složité. Závěr Caché dlouhou dobu podporovala různé způsoby datové persistence v Java aplikacích - přes JDCB nebo přístup k objektovým datům. A dosud byly tyto postupy "Caché-centrické". Vývojáři byli pověřeni definováním objektů v Caché a vytvořením jejich projekcí v prostředí Java. Nová technologie Jalapeño dává vývojářům možnost dosáhnout datové persistence pomocí postupu "Java-in". Persistentní Caché třídy mohou být definovány a kompilovány z definic tříd POJO. Za běhu programu jsou databázové připojení i persistence řízeny Správcem Objektů, jenž je součástí Jalapeña. Vývojáři mohou použít původní objekty POJO bez přemýšlení o tom, jak je persistence v databázi zajištěna. Také nemusí používat Caché studio a jsou osvobozeni od únavného a časově náročného objektově-relačního mapování. Caché umožňuje jedním spojením přístup k datům jak objektově tak i relačně a proto vývojáři mohou uvažovat v pojmech objektů. Javovské aplikace mohou využít vysoce výkonné metody objektově-orientované persistence a dotazovat Caché databázi pomocí SQL. Technologie Jalapeño neomezuje implementaci aplikací pouze nad Caché. S menšími úpravami může javovská aplikace vytvořená technologií Jalapeño běžet i nad relačními databázemi, avšak výsledný výkon nebude tak dobrý.