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



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

A Java Persistence API PersistenceAPI / 3

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)

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

EJB - Perzisztencia. EntityManager

A könyv tartalomjegyzéke

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

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

Adatbázis-kezelés ODBC driverrel

Adatbázisok webalkalmazásokban

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

Adatbázis rendszerek I

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

Adatbázisok* tulajdonságai

MDAC - Microsoft Data Access Components

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

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

Generikus Típusok, Kollekciók

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

JEE tutorial. Zsíros Levente, 2012

Eseményvezérelt alkalmazások fejlesztése II 10. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté

A Java EE 5 plattform

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

JAVA PROGRAMOZÁS 2.ELŐADÁS

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Szakdolgozat. Kovács Lilla

Metamodellezés. Simon Balázs BME IIT, 2011.

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

ANDROID ALKALMAZÁSFEJLESZTÉS

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

Access adatbázis elérése OLE DB-n keresztül

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

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

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

Alternatív adatbázisok Gráfadatbázisok

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

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

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

Adatbázis kezelés Delphiben. SQL lekérdezések

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (ASP.NET)

Adatmodellezés. 1. Fogalmi modell

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Egységes és objektumközpontú adatbázis-kezelés (2. rész)

8. rész: Implementáció JDeveloperben

Adatbáziskezelı-szerver SQL. Relációs adatbázis-kezelık. Relációs adatszerkezet. Házi feladat

Programozási nyelvek Java

Adatbáziskezelő-szerver. Relációs adatbázis-kezelők SQL. Házi feladat. Relációs adatszerkezet

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

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

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Adatbázis, adatbázis-kezelő

SZAKDOLGOZAT CSEHI MIKLÓS DEBRECEN 2009.

Adatbáziskezelés Delphi 5 alatt. Bese Antal

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

Adatbázis rendszerek SQL nyomkövetés

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Bánsághi Anna

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

CAD-CAM

B I T M A N B I v: T M A N

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Webes alkalmazások fejlesztése 3. előadás. Objektumrelációs adatkezelés (Entity Framework) Cserép Máté

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

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Bevezetés a Seam keretrendszer használatába

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

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

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

Adatbázis-kezelés, információs-rendszerek

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

JNDI - alapok. Java Naming and Directory Interface

Objektumelvű programozás

Adatbázisok I Adatmodellek komponensei. Adatbázis modellek típusai. Adatbázisrendszer-specifikus tervezés

A hibrid DB cloud biztonsági eszköztára. Kóródi Ferenc Budapest,

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Gazdasági folyamatok térbeli elemzése. 5. elıadás

Vektoros grafikát tároló adatbázisok. Katona Endre Térképi adatbázisok diasorozata alapján

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

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

Mosolygó Ferenc. Értékesítési Konzultáns.

ANDROID ALKALMAZÁSFEJLESZTÉS

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

JAVA PROGRAMOZÁS 3.ELŐADÁS

Adatbázisrendszerek. adatbázisokban. Objektumorientált és objektum-relációs adatbázisok április 24.

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

Adatbázis-kezelés. Harmadik előadás

Entity Framework + LINQ oktatási segédlet

Programozási nyelvek Java

A SZOFTVERTECHNOLÓGIA ALAPJAI

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

Hello, EJB! Egy egyszerű példa

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

Webalkalmazás fejlesztés Java EE környezetben NetBeans segítségével: JavaServer Faces 1.2 AJAX

Átírás:

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

Az előadás célja JPA Java Persistence API ORM Object Relational Mapping Entitások közötti asszociációk megvalósítása Fontosabb fogalmak perzisztencia szolgáltató (Persistence Provider) perzisztencia egység (Persistence Unit) entitás manager (Entity Manager) entitás (Entity) perzisztencia kontextus (Persistence Context)

Perzisztencia Állandóság. Mechanizmus, amely során az alkalmazás adatai megőrzésre kerülnek valamely perzisztens tárolóban. Perzisztens tároló: pl. adatbázis.

Java Persistence API Egy specifikáció, amelyet minden alkalmazásszervernek kötelező implementálni. Használható alkalmazásszerveren kívül is. Osztályozás: CMP Container Managed Persistence AMP Application Managed Persistence

ORM Probléma: az adatok szervezésének különbözősége Alkalmazás: objektumok Adatbázis: relációs táblák Megoldás: ORM (Object Relational Mapping) software (JPA implementáció, Persistence provider) Oracle Toplink, Hibernate, Kodo, Open JPA,...

Fejlesztési lehetőségek top-down: Java Domain Objects Database Schema; annotációk vagy XML konfigurációs fájl bottom-up: Database Schema + Data Model Java Domain Objects; Reverse Engineering

Annotációk Annotáció = Forráskódba illesztett metaadat, amely befolyásolja, hogy különböző eszközök és osztálykönyvtárak, hogyan kezeljék azt. Leggyakrabban osztályhoz, attribútumhoz vagy metódushoz rendeljük. Szintaxis @AnnotációNeve(paraméter1=érték1, paraméter2=érték2... )

Annotációk és a Java EE Az annotációkat az alkalmazásszerver értelmezi és figyelembe veszi a komponensek telepítésekor. Az annotációk átveszik a telepítésleírók (XML: web.xml ) szerepét, amennyiben vegyesen használjuk, felülírják azokat.

Annotáció példa Erőforrás elérése - Nem kell kódot írni public class SomeClass{ @Resource(name="jdbc/distedudb") private javax.sql.datasource datasource;... }

Entitásosztály Entitás Olyan osztály, amelynek példányai perzisztensek. @Entity public class Customer implements Serializable{ @Id protected Long id; } protected String name; protected Address address; protected PreferredStatus status; @Transient protected int ordercount; public Customer() {}...

Entitásosztály megkötések az osztály publikus, az attribútumok nem publikusak, ha paraméterként át akarom adni (távoli interfész) akkor szerializálható, elsődleges kulcsnak megfelelő attribútumot annotálni kell: @Id, public vagy protected argumentum nélküli konstruktor.

Elsődleges kulcs Minden entitásnak, amit relációs adatbázisra akarunk leképezni, rendelkeznie kell elsődleges kulccsal. Elsődleges kulcsként a következő típusok használhatók: Primitív típusok: byte, int, short, long, char Primitív típusok burkoló osztályai: Byte, Integer, Short, Long, Character Primitív típusok vagy azok burkoló osztályainak tömbje: byte[], int[], short[], long[], char[], Byte[], Integer[], Short[], Long[], Character[] Szöveges típusok: String Speciális numerikus típusok: java.math.biginteger Dátumok: java.util.date, java.sql.date

Alapértelmezett leképzés Entitásosztály tábla Entitásosztály attribútuma oszlop (mező) Entitásosztály példánya sor (rekord) Annotációkkal felülírható @Table(name="CUST") public class Client{ @Column(name="cname") private String clientname;... }

Elsődleges kulcsgenerálás @Entity @Table( name = "CUST") public class Client{ @Id @GeneratedValue(strategy=GenerationType.AUTO) private int clientreference; //... }

Alapértelmezett leképzés felülírása @Entity @Table(name="CUST") public class Customer{ @Transient private int notpersistent; //.. @Column(name=cname) private String clientname; //... }

Kapcsolatok entitások között Osztályozás: Kapcsolat számossága: egy-az-egyhez sok-az-egyhez egy-a-sokhoz sok-a-sokhoz Kapcsolat irányítottsága: egyirányú kétirányú

Egyirányú, egy az egyhez kapcsolat Customer Record @Entity public class Customer{ @Id private int id; @OneToOne private Record custrecord; //... } @Entity public class Record{ @Id private int recid; //... }

Kétirányú, egy-az-egyhez kapcsolat Customer Record @Entity public class Customer{ @Id private int id; @OneToOne private Record custrecord; //... } @Entity public class Record{ @Id private int recid; } @OneToOne(mappedBy="custRecord") private Customer customer; //...

Egy-az-egyhez kapcsolat (egy, illetve kétirányú)

Kétirányú egy-a-sokhoz, illetve sok-az-egyhez kapcsolat Customer Order @Entity public class Customer{ @Id private int id; @OneToMany(mappedBy="customer") private Collection<Order> orders; //... } @Entity public class Order{ @Id private int orderid; @ManyToOne private Customer customer; //... }

Egy-a-sokhoz kapcsolat

Kétirányú sok-a-sokhoz kapcsolat Worker Project @Entity public class Worker{ @Id private int id; @ManyToMany private Collection<Project> projects; //... } @Entity public class Project{ @Id private int pid; @ManyToMany(mappedBy="projects") private Collection<Worker> workers; //... }

Sok-a-sokhoz kapcsolat

Alapfogalmak Entity life-cycle states életciklus-állapotok: új new nincs hozzárendelt rekord menedzselt managed szinkronban van az entitás az adatbázis rekorddal lecsatolt - detached nincs szinkronban az entitás az adatbázis rekorddal törölt - removed - az adattábla megfelelő rekordja ki fog törlődni Entity manager: az az objektum, amely kezeli az entitásobjektumokat, vezérli ezek életciklusát Persistence context: egyedi entitások halmaza Persistence identity: egy egyedi érték, amely az entitás azonosítására szolgál. Egy entitás objektum egy rekord

EntityManager műveletek persist() merge() remove() find()

JPQL JPA SQL SELECT [<result>] [FROM <candidate-class(es)>] [WHERE <filter>] [GROUP BY <grouping>] [HAVING <having>] [ORDER BY <ordering>] 1. példa SELECT p FROM Person WHERE p.city.id IN ("SF","NY", "FS") 2. példa Named Parameters : Query q = em.createquery("select p FROM Person p WHERE p.lastname = :surname AND o.firstname = :forename"); q.setparameter("surname", thesurname); q.setparameter("forename", theforename"); Numbered Parameters : Query q = em.createquery("select p FROM Person p WHERE p.lastname =?1 AND p.firstname =?2"); q.setparameter(1, thesurname); q.setparameter(2, theforename);