UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 10. Adatkezelés JPA-Hibernate Dr. Bilicki Vilmos Szegedi.

Slides:



Advertisements
Hasonló előadás
RESTful Web Service tesztelése
Advertisements

ADATBÁZISOK.
© Kozsik Tamás Adatbáziskezelés •Relációs adatbáziskezelők •Noha a Java objektum-elvű, egyelőre nem az objektum-elvű adatbáziskezelőket támogatja.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Adatbázis alapú rendszerek 1. Gyakorlat Követelmények / SQL.
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
1 Informatikai Szakképzési Portál Adatbázis kezelés DCL – Adatvezérlő nyelv.
Spanning Tree Protocol
Műveletek logaritmussal
– SQL 2: Adatok kezelése – Tarcsi Ádám, január 30. Adatbázis gyakorlat.
Hibernate Nem ezzel nem lehet embereket hibernálni! DE akkor mit lehet? A válasz pedig ezekben a diákban rejlik.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Programrendszerek Fejlesztése
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 7. Gyakorlat Operator overloading.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 8. Gyakorlat Operator overloading II.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 5. Gyakorlat Öröklődés, virtuális függvények,
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
1 Fejlett Programozási Technikák 2. 15/7. Fejlett Programozási Technológiák 2. 2 Az előző előadás tartalma: JFC és Swing  Múlt  Felépítés  Java Bean.
Address Resolution Protocol (ARP)
Fejlett Programozási Technológiák II. Világos Zsolt 1. gyakorlat.
Fejlett Programozási Technológiák II. Világos Zsolt 7. gyakorlat.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 11. Szolgáltatás Integráció Dr. Bilicki Vilmos Szegedi Tudományegyetem.
Programrendszerek fejlesztése Bevezető
Készítette: Sárközi Anikó
A Java programozási nyelvSoós Sándor 1/20 Java programozási nyelv 11. rész – Adatbázis-programozás Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Adatbázis-kezelés ACCESS program:
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
ADATBÁZISOK
Implementing Demeter: A Resource Management Tool used by Morgan Stanley’s Farm Engineering Team (In English) Maczika Száva Jenő MASRAAI.ELTE Programtervező.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Nézettáblák létrehozása, módosítása és törlése
WEB Technológiák ISAPI ME Általános Informatikai Tsz. dr. Kovács László.
WEB MES (webes gyártásirányító rendszer)
Zárolási módszerek blokkolás sorrendiség igény Paraméterek finomság időtartam mód.
XML támogatás adatbázis-kezelő rendszerekben
Perzisztencia-megoldások Java Technológiával Molnár István, Simon Géza.
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
Adatkezelés Ez az előadó neve beosztása vállalata.
Felhasználók és jogosultságok
Készítette: Tóth Ervin
SQL-Structured Query Language. Parancs(utasítás) csoportok CREATE - táblák létrehozása ALTER – táblák módosítása DROP – táblák törlése DDL –Data Definition.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 5.4 Szolgáltatói Keretrendszerek Prof. Dr. Gyimóthy Tibor,
Műszer vezérlő - kezelő program GPI-745A teszterhez.
Adatbázis kezelés.
Adatbázis-kezelés.
XML fejlesztések TSQL fejlesztések Tábla paraméter SQLCLR fejlesztések 8k limit feloldása Több paraméteres UDA-ek Ordered UDF-ek Entity Framework ADO.NET.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Java web programozás 11..
Enterpise JavaBeans Simon Balázs
Automatizálási folyamatok az SQL 2012-ben
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Okostelefon köztesréteg Dr. Bilicki Vilmos Szegedi Tudományegyetem.
Webprogramozó tanfolyam
Számítógépes adatbázis-kezelés
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Okostelefon felhő Prof. Dr. Gyimóthy Tibor Szegedi Tudományegyetem.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 3. Átszövődő vonatkozások Dr. Bilicki Vilmos Szegedi Tudományegyetem.
 Adatbázis:  Valamilyen szempont szerint rendszerezett adathalmaz.  Adatbázis kezelés:  Adatok tárolása  Műveletek végzése az adatbázison; (Adatok.
Adatbázis-kezelés 1-2. adatbázis-kezelő rendszer 1.új adatbázisokat hozhassanak (adat definició 2.lekérdezések és módosítások (adat manipuláció) 3.Támogassa.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás I. 3. gyakorlat.
Adatbázisszintű adatmodellek
Programozás III JPA.
JDBC.
Alkalmazásfejlesztés gyakorlat
Hibernate / EclipseLink / OpenJPA összehasonlítás
Adatbázis használat a webszervernél
Előadás másolata:

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 10. Adatkezelés JPA-Hibernate Dr. Bilicki Vilmos Szegedi Tudományegyetem Informatikai Tanszékcsoport Szoftverfejlesztés Tanszék

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Tartalom  JDBC ■Connection ■Statements ■Resultset ■Tranasactions  JPA ■Entitás ■ORM ■Lekérdezések  Hibernate ■Betöltés ■Gyrostárak Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Problémák  Adatbázis elérés Java-ból - JDBC  ACID vs. Hosszú Munkamenetek (Unit of Work?)  Relációs vs. Objektum Orientált  Memória vs. Adatbázis Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Perzisztencia  Perzisztens objektum: a létrehozó program állapotától függetlenül is létezik  Az objektumhierarchia egy részének kimentése/betöltése transzparens módon ■Fájlba (Object Serialization API) –Kevésbé típusos (bájtsorozat) –Objektum referenciák?Keresések?Biztonság? ■Objektum orientált adatbázisba –Nem kellene átkonvertálni(objektum  relációk) –Még nem elég hatékony az adatkezelés –Nem népszerűek, kiforratlanok, nincs komplett implementáció ■Relációs adatbázisba –Nagyon macerás a leképezés/átkonvertálás 4 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 5 JDBC  Platform és szállító független  Egy egyszerű Java API a programozók számára  JDBC meghajtó menedzser  Gyártó specifikus meghajtók mellyel az egyes gyártók optimalizálhatják a kapcsolatot  Hasonló megoldás mint a Microsoft igen sikeres ODBC megoldása (C nyelv)  Az adatok titkosítása az szállító meghajtó feladata Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 6 JDBC kapcsolat felépítés  Connection Pooling ■ConnectionPoolDataSource interfész –1:X kapcsolat –fizikai kapcsolatok helyett logikai kapcsolatok –a kliens nem érzékel semmit –Alkalmazás szerver biztosítja ezt a funkciót Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 7 JDBC objektumok Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 8 Statement  paraméter nélküli kifejezések  egyszerű SQL kifejezések létrehozására használandó  executeQuery ( ■egyszerű lekérdezés Select * from t  executeUpdate ■INSERT ■UPDATE ■DELETE ■CREATE TABLE ■DROP TABLE ■a visszatérési értéke egy integer mely az érintett sorok számát adja meg egyébként 0  execute ■olyan esetekben használják amikor több mint egy válasz érkezik Connection con = DriverManager.getConnection(url, "sunny", ""); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2"); Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 9 Prepared Statement  a Statement alosztálya  előre fordított SQL kifejezések  egy-vagy több paramétere lehet (IN)  több metódust használhatunk az IN paraméterek beállítására  sokkal hatékonyabb lehet mint a Statement objektum (előre fordított)  gyakran használt kifejezések létrehozására használandó  többször futtatható, a beállított paraméterek megmaradnak Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 10 Callable Statement  segítségével SQL tárolt eljárásokat futathatunk  supportsStoredProcedures()  getProcedures()  {? = call procedure_name[(?, ?,...)]}  IN paraméterek  OUT paraméterek ■regisztrálni kell ■nincs külön lehetőség nagy adatok kezelésére  INOUT paraméterek Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 11 Result Set  Az előző három objektum eredménye  Alapesetben nem írható és nem görgethető (csak egyszer lehet rajta végigmenni)  A JDBC 2.0 API ezeket lehetővé teszi  Nem minden meghajtó képes erre (pl.: postgresql)  getXXX(név vagy sorszám) metódusok (select a, select * )  getMetaData  updateRow(), insertRow(), deleteRow(), refreshRow()  JDBC 2.0 ■previous ■first ■last ■absolute ■relative ■afterLast ■beforeFirst SZTE-Siemens JEE alapok

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 12 Result set (JDBC 3.0)  Kurzor: ■TYPE_FORWARD_ONLY ■TYPE_SCROLL_INSENSITIVE ■TYPE_SCROLL_SENSITIVE  Párhuzamosság ■CONCUR_READ_ONLY ■CONCUR_UPDATABLE  Tarthatóság: ■HOLD_CURSORS_OVER_COMMIT ■CLOSE_CURSORS_OVER_COMMIT  Használata: Connection conn = ds.getConnection(user, passwd); Statement stmt = conn.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY, ResultSet.CLOSE_CURSORS_AT_COMMIT); ResultSet rs = stmt.executeQuery(“select author, title, isbn from booklist”); SZTE-Siemens JEE alapok

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 13 Tranzakciók  bankbetét átutalás ■A helyen csökken ■B helyen növekszik  egy tranzakció egy vagy több kifejezést tartalmaz melyek csak együtt hajtódnak végre (egyébként visszaállítja az eredeti állapotot - rollback)  a kapcsolat objektum auto-commit módban van azaz minden egyes kifejezést külön külön hajt végre  ha ez le van tiltva akkor a tranzakció addig nem ér véget amíg a commit vagy rollback metódusokat meg nem hívják  a tranzakció kezdete az auto-commit mód letiltásával kezdődik  a JDBC 2.0 API segítségével elosztott tranzakciókat is végrehajthatunk  JDBC 3.0 SavePoint SZTE-Siemens JEE alapok

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 14 con.setAutoCommit( false ); bError = false; try { for(... ) { if( bError ) { break; } stmt.executeUpdate(... ); } if( bError ) { con.rollback(); } else { con.commit(); } } / catch ( SQLException SQLe) { con.rollback();... } // end catch catch ( Exception e) { con.rollback();... } // end catch SZTE-Siemens JEE alapok

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS 15 Elosztott tranzakciók Tranzakció kezelő (JTA) JDBC meghajtó:  XADataSource  XAConnection  XAResource Alkalmazás szerver Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Problémák  ORM  Gyorstítótárazás  Szolgáltatás logika  Tranzakciók Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS ORM kérdések  Hogyan nézzen ki a lementet objektum?  Hogyan definiáljuk a leképezést leíró metaadatot?  Hogyan képezzük le a származási hierarchiákat?  Hogyan kezeljük az objektumok egyezőségét?  Hogyan működik együtt az ORM az üzelti logikával futási időben?  Mi az objektum életciklusa?  Milyen aggregáló és rendező megoldásokat biztosít?  Hogyan kezeljük az asszociációkat?  Tranzakciók, párhuzamosság?  Gyorsítótárazás? 17 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS ORM paradigma ütközés  Kollekciók  Identitás  Származás  Navigáció Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS ORM előnyök  Fejlesztési ciklus (CRUD  Karbantarthatóság  Sebesség  Gyártó függetlenség 19 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Java Persistence API  Java Community Program: JSR 317  Entitások kezelése (annó EJB 2.x < Entitás Bab) ■Könnyűsúlyú perzisztens domain objektum ■Öröklődés, Polymorfikus viselkedés ■Absztrakt, Konkrét ■Az állapota a JavaBab konvencióknak megfelelő tulajdonságok halmaza Programrendszerek fejlesztése20

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Entitás  Mező vs. Tulajdonság hozzáférés ■Mellékhatások (Mező+)  ■Több ■View ■Replikációs ■History Programrendszerek fejlesztése21

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Viszonyok  Viszonyok (egyirányú, kétirányú) (JoinTable, mappedBy) (JoinColumn, JoinTable, mappedBy) (JoinTable) (JoinTable, mappedBy) Programrendszerek fejlesztése22

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Identitás  Referencia vs. Adatbázis elsődleges kulcs  Nem célszerű adatbázis alapú azonosítást használni  Célszerű adatbázis alapú azonosítást használni  Sok fajta ID generáló megoldás Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Származás  A gyökér osztály dekorálásával határozható meg a tárolási stratégia ■Egy tábla osztály hierarchiánként –Megkülönböztető oszlop ■Egy tábla minden osztálynak –Gyenge a polymorfikus viselkedése (Union) ■Join stratégia ahol csak a saját adatagok vannak a táblában –Lassú (sok JOIN) Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Navigáció  Navigáció? ■Java egzakt –Obejktum gráf bejárás x.d.g.getZ(); ■SQL tetszőleges: –N+1 select problémája –Minimalizálni kell a kérések számát – join –Előre kell tudnunk mit akarunk lekérni »User »User join Billing details 25 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Entitás állapotok  Tranziens: ■Az újonnan példányosított (a new operátorral) objektumok még nem perzisztensek. ■Ezek az objektumok nem lehetnek tranzakcionálisak, azaz a rajtuk végrehajtott bármely módosítási művelet nem lehet része tranzakciónak. ■Ha egy tranziens objektumot perzisztálni akarunk, vagy más szóval a tranziens állapotból perzisztensbe akarjuk helyezni, a perzisztencia menedzser save függvényét kell meg hívni az objektumra, vagy egy perzisztens objektumból hivatkozni kell a tranziens objektumra.  Perzisztens: ■A perzisztens állapotban lévő objektumpéldány rendelkezik egy elsődleges kulccsal azonosított érvényes adatbázis bejegyzéssel. ■A tranzakció végeztével csak azok a perzisztens entitások kerülnek szinkronizálásra, amelyek módosultak. Ezt a folyamatot dirty chechking-nek nevezik..  Leválasztott (detached): ■A perzisztens objektumok a tranzakció végeztével is léteznek és tartalmaznak adatokat, azonban leválasztódnak a viszony bezáródásával Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Életciklus  Adatbázis vs. Gyorstár vs. Memória  Entitás létrehozása  Entitás törlése  Szinkronizálás  Frissítés  Lecsatolt entitások  Menedzselt entitások  Állapot betöltése Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Entitás Menedzser  Az entitásokat az Entitás Menedzser – EM kezeli ■Konténer által kezelt –Automatikusan propagálódik ■Alkalmazás által kezelt –A tranzakciókat nem propagálja automatikusan  Nem szálbiztos  Fontosabb metódusai: ■persist() ■find() ■update() ■remove() Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Párhuzamosság  Párhuzamos hozzáférés esetén az adtaforrásban lévő adathoz egy időben többen is hozzáférnek  Optimista zárolás ■Írás előtt megnézi, hogy módosították-e ■Verzió mező  Pesszimista zárolás ■Amíg az adatot módosítja addig zárolja Programrendszerek fejlesztése29

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Zárolási szintek  OPTIMISTIC – olvasási zárolás  OPTIMISTIC_FORCE_INCREMENT – olvasási zárolás és megnöveli a verziószámot  PESSIMISTIC_READ – Hosszú távú olvasási zárolás. Más tranzakciók olvashatják, de nem írhatják  PESSIMISTIC_WRITE – Írási zárolás, mások nem olvashatják  PESSIMISTIC_FROCE_INCREMENT – Olvasási zárolás és verzió növelés  READ - OPTIMISTIC  WRITE - PESSIMISTIC_FROCE_INCREMENT  NONE Programrendszerek fejlesztése30

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Bab Validálás  Nem csak JPA képesség  A Web és az EJB konténernek is része  Mező és tulajdonsághoz köthető szabályok  Javax.validation.c onstrains – bővíthető  Idő + minta + érték Programrendszerek fejlesztése31

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Lekérdező nyelv  SQL-hez hasonló de Objektum Orientált  Lehetővé teszi az objektumgráfon lévő elemek címzését Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Hibernate 33 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Fogalmak:  SessionFactory (net.sf.hibernate.SessionFactory): Egy tárolóhely a lefordított mappingek részére. Innen érhető el a Session és a ConectionProvider. Tartalmazhat egy másod-szintű tárolót, ami a tranzakciók között használhatók fel processz vagy klaszterszinten.  Session (net.sf.hibernate.Session): Ez egy rövid életű objektum, ami egy kapcsolatot reprezentál a tároló és az applikáció között, Magába foglal egy JDBC kapcsolatot. Innen kérhetőek el a tranzakció objetumok. Egy elsőszintű tároló tartozik hozzá a perzisztens objektumok számára. Amikor lépkedünk az objektum gráfban, vagy azonosító alapján keresünk, akkor van rá szükség.  Perzisztens Objektumok: Szintén rövid életű objektumok, amelyek pontosan 1 session-el vannak kapcsolatban. Amikor a session bezárul, akkor szabaddá válnak és más applikációs szintek is használhatják.  Tranziens Objektumok: Akkor beszélünk tranziens objektumokról amikor még sohasem voltak elmentve (tehát még nem voltak perzisztensek), így például ezeknek általában még nincs azonosítójuk. 34 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Fogalmak:  Tranzakció (net.sf.hibernate.Transaction): Rövid életű objektum ami egy atomi egységet valósít meg (tehát vagy teljesül az összes művelet vagy egyik sem, ha valamilyen hiba folytán nem teljesül akkor vissza kell tudni vonni a már bekövetkezett módosításokat). Egy session-ben több tranzakció is megvalósulhat.  ConnectionProvider (net.sf.hibernate.connection.ConnectionProvider): Innen kérhetjük el a JDBC kapcsolatokat (itt a kapcsolatok tárolódnak is). Leválasztja az alkalmazást az alsóbb rétegektől (DataSource, DriverManager). A fejlesztő által implementálható.  TransactionFactory (net.sf.hibernate.TransactionFactory): Itt kérhetjük el a tranzakció objektumokat. A fejlesztő által implementálható. 35 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Perzisztencia 36 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Perzisztencia menedzser  CRUD  Lekérdezés  Tranzakció  Gyorstár 37 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Objektumok betöltése  Azonosító alapján  HQL  Kritérium alapján  Minta alapján 38 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Betöltés  Lazy ■Csak proxy  Batch ■Ha egy proxy-t fel kell oldani akkor többet is felold  Eager ■Mindent betölt 39 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Optimalizálás - Gyorstárak 40 Programrendszerek fejlesztése

UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Tartalom  JDBC ■Connection ■Statements ■Resultset ■Tranasactions  JPA ■Entitás ■ORM ■Lekérdezések  Hibernate ■Betöltés ■Gyrostárak Programrendszerek fejlesztése