A Java Persistence API PersistenceAPI / 3

Hasonló dokumentumok
Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

JPA támogatás Eclipse-ben

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Enterprise JavaBeans 1.4 platform (EJB 2.0)

A Java EE 5 plattform

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

EJB - Perzisztencia. EntityManager

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Generikus Típusok, Kollekciók

JEE tutorial. Zsíros Levente, 2012

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Szoftver Tervezési Dokumentáció. Nguyen Thai Binh

6. rész: EJB-k tervezése és implementálása

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

Osztályok. 4. gyakorlat

Programozási nyelvek Java

Programozási nyelvek Java

Szakdolgozat. Kovács Lilla

JAVA webes alkalmazások

OOP #14 (referencia-elv)

Osztálytervezés és implementációs ajánlások

Osztálytervezés és implementációs ajánlások

Bevezetés: az SQL-be

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

JAVA PROGRAMOZÁS 2.ELŐADÁS

Enterprise Java Beans. EJB - Általános bevezető

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Objektumelvű programozás

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

C++ programozási nyelv

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Abstract osztályok és interface-ek. 7-dik gyakorlat

Objektumorientált programozás C# nyelven

C++ programozási nyelv

MDAC - Microsoft Data Access Components

Programozás. Bevezetés. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Objektumorientált paradigma és programfejlesztés Bevezető

Bevezetés a Seam keretrendszer használatába

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Adatbázis rendszerek I

Objektumorientált paradigma és a programfejlesztés

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Bevezetés a Python programozási nyelvbe

Java II. I A Java programozási nyelv alapelemei

Java III. I I. Osztálydefiníció (Bevezetés)

SZAKDOLGOZAT CSEHI MIKLÓS DEBRECEN 2009.

Szathmáry László Debreceni Egyetem Informatikai Kar

Interfészek. PPT 2007/2008 tavasz.

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java III. I I. Osztálydefiníció (Bevezetés)

ELTE SAP Excellence Center Oktatóanyag 1

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Java programozási nyelv 5. rész Osztályok III.

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Bánsághi Anna 2014 Bánsághi Anna 1 of 31

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

7. rész: A specifikációtól az implementációig az EJB rétegben

Bevezető. Servlet alapgondolatok

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Java Persistence API. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar Utolsó módosítás: december 20.

Már megismert fogalmak áttekintése

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Java Programozó képzés A&K AKADÉMIA 2019.

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Tartalom. Az EJB 2.1 problémái Az EJB 3 megoldásai

Programozási alapismeretek 4.

C#, OOP. Osztályok tervezése C#-ban

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

OOP. Alapelvek Elek Tibor

Informatikai alapismeretek Földtudományi BSC számára

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Java programozási nyelv 4. rész Osztályok II.

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

OOP: Java 8.Gy: Abstract osztályok, interfészek

Junior Java Képzés. Tematika

Entity Framework alapú adatbáziselérés

Adatbázis rendszerek. dr. Siki Zoltán

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

Szervlet-JSP együttműködés

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

S04-2 Elosztott alkalmazások készítése

Átírás:

A Java Persistence API Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2007. 11. 27. A Java Persistence API Előzm zmények Szerializálás Egyedi kevés automatizmus Hibernate, Oracle Toplink Nem szabványos Java Data Object (JDO) Interface alapú API. Használatához egy implementáció szükséges. A Persistence API ötleteket merített belőle. A Java Persistence API PersistenceAPI / 2 Előzm zmények (folyt.) JDBC Nem objektumok, hanem adatok perzisztenciáját biztosítja. EJB 2.0, Entity Bean Szabványos specifikáció és implementáció. Viszonylag bonyolult programozási modell. Az egyszerűsítési törekvések eredménye a Persistence API. A Java Persistence API PersistenceAPI / 3

Java Persistence API POJO technológia Szabványos objektum relációs leképezés. Mivel egyszerű osztályokat használ, az öröklés, polimorfizmus lehetőségei használhatók. Annotációk használatával egyszerűsíti a programozási modellt. Támogatja a cserélhető perzisztencia implementációk használatát. Támogatja az SQL nyelvű lekérdezéseket. Az eredmény objektumok kollekciója. A Java Persistence API PersistenceAPI / 4 Java Persistence API (folyt.) A perzisztencia API eszközeivel leírhatjuk az ER modellt. Az ER modell relációs modellé konvertálása automatikusan megtörténik. Az entitás osztályok példányainak (a továbbiakban "entitások") állapota egy relációs adatbbázisban tárolódik. Az állapotok és az adatbázis tartalom szinkronizálása automatikus. A Java Persistence API PersistenceAPI / 5 Alapfogalmak Entitás (Entity) Perzisztencia egység (Persistence Unit) Perzisztencia kontextus (környezet) (Persistence Context) A Java Persistence API PersistenceAPI / 6

Perzisztencia egység A csomagolás és telepítés alapegysége Menedzselt osztályok halmaza (entitások és kapcsolódó osztályok) Objektum/relációs leképzési információk Java annotációk és/vagy XML leírók Megadja a hatáskörét a lekérdezéseknek és az entitás relációknak Konfigurációs információ a perzisztence provider számára: persistence.xml A Java Persistence API PersistenceAPI / 7 Perzisztencia környezet Futás idejű alkalmazás környezet Menedzselt entitás példányok halmaza, amelyek egy perzisztencia egységhez tartoznak Entitások, amelyeket az adatbázisból olvastak be az adatbázisba fognak kiírni. Az éppen most létrehozott entitásokat is tartalmazza A Java Persistence API PersistenceAPI / 8 Perzisztencia környezet (folyt.) A perzisztencia környezet élettartama lehet: Tranzakció alapú: egy tranzakcióra kiterjedő Bővített: több egymás utáni tranzakción átívelő A context élettartamát az alkalmazás vagy a konténer menedzselheti A Java Persistence API PersistenceAPI / 9

Entitás s osztály (Entity( Class) Követelmények: A javax.persistence.entity annotációval kell megjelölni Kell legyen egy public vagy protected default konstruktor. Sem az osztály, sem a metódusok, sem a perzisztens adattagok vagy property-k nem lehetnek final minősítésűek Ha a példányait át akarjuk adni érték szerint egy távoli objektumnak (ideértve egy session bean üzleti interface-ét is), implementálnia kell a Serializable interface-t. A Java Persistence API PersistenceAPI / 10 Entitás s osztály (folyt.) Követelmények (folyt.): Leszármazhat más entitás vagy nem entitás osztályból Lehet ősosztálya nem entitás osztálynak Ilyenkor a leszármazott osztály adattagjai nem lesznek perzisztensek A perzisztens adattagok nem lehetnek public minősítésűek A perzisztens adattagok csak metódusokon keresztül érhetők el. A továbbiakban az "entitás" kifejezés egy példányt jelent A Java Persistence API PersistenceAPI / 11 Perzisztens állapot Az entitás osztály perzisztens állapotát megadhatjuk: adattagokkal property-kkel. A második esetben a JavaBean tervezés mintáit (elnevezési konvencióit) kell használnunk. A továbbiakban mindkét esetre a "perzisztens mező" kifejezést használjuk. A Java Persistence API PersistenceAPI / 12

Perzisztens mezők Típusuk az alábbiak valamelyike lehet: Java primitív típusok java.lang.string további szerializálható típusok: Java primitive típusok fedőosztályai java.math.biginteger java.math.bigdecimal java.util.date java.util.calendar java.sql.date java.sql.time A Java Persistence API PersistenceAPI / 13 Perzisztens mezők k (folyt.) további szerializálható típusok (folyt.): java.sql.timestamp programozó által definiált szerializálható típusok byte[] Byte[] char[] Character[] enumerated típusok más entitás osztályok, vagy azok kollekciói beágyazható osztályok (embeddable classes) ezeket a javax.persistence.embeddable annotációval kell megjelölni A Java Persistence API PersistenceAPI / 14 Perzisztens mezők k (folyt.) Az alábbi kollekció típusok használhatók: java.util.collection java.util.set java.util.list java.util.map és a fentiek generikus változatai. A Java Persistence API PersistenceAPI / 15

Perzisztens mezők k (folyt.) Minden mező az osztályon belül alapértelmezés szerint perzisztens lesz. Ha valamelyik mező nem a perzisztens állapot része, azt a javax.persistence.transient annotációval kell megjelölni. A Java Persistence API PersistenceAPI / 16 Egyedi azonosító (elsődleges kulcs) Minden entitás osztályban meg adni egy elsődleges kulcsot, amely a példányokat egyedileg azonosítja. Két fajtája: egyszerű kulcs a javax.persistence.id annotációval kell megjelölni összetett kulcs típusát egy kulcs osztályban kell definiálni a javax.persistence.embeddedid és a javax.persistence.idclass annotációkkal kell megjelölni. A Java Persistence API PersistenceAPI / 17 Egyedi azonosító (folyt.) Egy kulcs vagy a kulcsosztály mezőinek típusa az alábbiak valamelyike lehet: Java primitív típusok (kivéve a lebegőpontos típusokat) a fenti típusok fedőosztályai java.lang.string java.util.date java.sql.date Definálható generált kulcs is, de az csak integrális típusú lehet. A Java Persistence API PersistenceAPI / 18

Kulcs osztály A kulcs osztályra meghatározott szabályok vonatkoznak. (Lásd a tutoriált.) A Java Persistence API PersistenceAPI / 19 Kapcsolatok Az egyes entitások közötti kapcsolatok (relációk) annotációkkal definiálhatók @OneToOne @OneToMany @ManyTo One @ManyToMany Egy- és kétirányú kapcsolat definiálható. A Java Persistence API PersistenceAPI / 20 Entitás manager Az entitások életciklusát és a perzisztencia környezetet kezeli. Életciklus műveletek: persist, remove, refresh, merge Keresési műveletek find, getreference Lekérdezést végző objektumok előállítását segítő metódusok createnamedquery, createquery, createnativequery Egyéb műveletek flush, clear, contains, lock,... A Java Persistence API PersistenceAPI / 21

Entitások életciklusa A Java Persistence API PersistenceAPI / 22 Entitások életciklusa (folyt.) Életciklus műveletek: new Új entitás jön létre Entitás még nem menedzselt és nem is perzisztens persist Az entitás menedzselt állapotba kerül Az entitás a tranzakció commitjával kerül be az adatbázisba A Java Persistence API PersistenceAPI / 23 Entitások életciklusa (folyt.) remove Törli a perzisztens entitást. Tranzakció commit esetén az adatbázisból is törlődik. refresh Az entitás állapota frissül az adatbázisból. Az entitások akkor kerülnek ki (detach) a perzisztencia contextből, ha a perzisztencia context befejeződik vagy törlődik szerializációval eltávolítják őket a perzisztencia contextből. A Java Persistence API PersistenceAPI / 24

Entitások életciklusa (folyt.) merge Egy lekapcsolódott entitás állapotát átmásolja egy menedzselt entitásba Visszatér a menedzselt példánnyal, melynek perzisztens állapota megegyezik az eredetivel A Java Persistence API PersistenceAPI / 25 Entitás managerek Container-managed A Java EE konténer biztosítja az életciklus műveletek végrehajtását. Használja a JTA (Java Transaction Architecture) API szolgáltatásait. Igénylése (injection) @PersistenceContainer EntityManager em; A Java Persistence API PersistenceAPI / 26 Entitás managerek (folyt.) Alkalmazás által managelt perzisztencia (application-managed entity managers) az életciklus műveleteket maga az alkalmazás kezeli nem kell hozzá a Java EE konténer (desktop alkalmazások is használhatják a perzisztencia API-t.) Igénylése (injection) @PersistenceUnit EntityManagerFactory emf; A fenti osztály segítségével hozható létre a megfelelő entitás manager: EntityManager em = emf.createentitymanager(); A Java Persistence API PersistenceAPI / 27

Objektum reláci ció leképez pezés Van egy default leképezés táblanév az osztálynév oszlopnév a mezőnév az embedded objektumok mezői is oszlopok lesznek A @Id-vel jelölt mező az elsődleges kulcs kapcsolatok leképezése a szokásos módon A default leképezés annotációkkal felülírható Az öröklés leképezése is szabályozható. A Java Persistence API PersistenceAPI / 28 Lekérdez rdezés Eszköz: Java persistence query language (gyakorlatilag szabványos SQL) natív SQL Statikus lekérdezések: annotációkkal vagy XML-el definiálhatók névvel ellátottak névvel vagy pozícióval lehet a paraméterekre hivatkozni Dinamikus lekérdezés az SQL parancs stringet futás időben hozom létre A Java Persistence API PersistenceAPI / 29 Lekérdez rdezés s (folyt.) A lekérdező nyelv a szokásos SQL elemeket tartalmazza, de objektumokon manipulál. A lekérdezés eredménye nem tábla, hanem objektumok kollekciója. A Java Persistence API PersistenceAPI / 30

Hivatkozások Java EE Tutoriál (java.sun.com) Molnár István, Zsemlye Tamás: Java Persistence API (SUN Hungary), Magyarországi Web Konferencia, 2007. http://web.conf.hu/2007/program/t/jpa (a link ellenőrizve: 2007. 11. 27.) A Java Persistence API PersistenceAPI / 31