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

10. Adatkezelés JPA-Hibernate

  • Upload
    bary

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

10. Adatkezelés JPA-Hibernate. Dr. Bilicki Vilmos Szegedi Tudományegyetem Informatikai Tanszékcsoport Szoftverfejlesztés Tanszék. Tartalom. JDBC Connection Statements Resultset Tranasactions JPA Entitás ORM Lekérdezések Hibernate Betöltés Gyrostárak. Problémák. - PowerPoint PPT Presentation

Citation preview

Page 1: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

10. Adatkezelés JPA-Hibernate

Dr. Bilicki Vilmos

Szegedi Tudományegyetem

Informatikai Tanszékcsoport

Szoftverfejlesztés Tanszék

Page 2: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Tartalom JDBC

■ Connection■ Statements■ Resultset■ Tranasactions

JPA■ Entitás■ ORM■ Lekérdezések

Hibernate■ Betöltés■ Gyrostárak

23.04.20. 2Programrendszerek fejlesztése

Page 3: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Problémák

Adatbázis elérés Java-ból - JDBCACID vs. Hosszú Munkamenetek (Unit of

Work?)Relációs vs. Objektum OrientáltMemória vs. Adatbázis

23.04.20. 3Programrendszerek fejlesztése

Page 4: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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(objektumrelá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

4Programrendszerek fejlesztése

Page 5: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

Page 6: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

6

JDBC kapcsolat felépítésConnection 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

Page 7: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

7

JDBC objektumok

Programrendszerek fejlesztése

Page 8: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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 érkezikConnection con = DriverManager.getConnection(url, "sunny", ""); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table2");

Programrendszerek fejlesztése

Page 9: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

Page 10: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

10

Callable Statementsegítségével SQL tárolt eljárásokat

futathatunksupportsStoredProcedures()getProcedures() {? = call procedure_name[(?, ?, ...)]} IN paraméterekOUT paraméterek

■ regisztrálni kell ■ nincs külön lehetőség nagy adatok kezelésére

INOUT paraméterek

Programrendszerek fejlesztése

Page 11: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

Page 12: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

Page 13: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

Page 14: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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 catchSZTE-Siemens JEE alapok

Page 15: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

15

Elosztott tranzakciók

Tranzakció kezelő (JTA) JDBC meghajtó:

XADataSource XAConnection XAResource

Alkalmazás szerver

Programrendszerek fejlesztése

Page 16: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Problémák

ORMGyorstítótárazásSzolgáltatás logikaTranzakciók

23.04.20. 16Programrendszerek fejlesztése

Page 17: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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?

17Programrendszerek fejlesztése

Page 18: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

ORM paradigma ütközés

KollekciókIdentitásSzármazásNavigáció

23.04.20. 18Programrendszerek fejlesztése

Page 19: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

ORM előnyökFejlesztési ciklus (CRUD - @Entity + @Id)KarbantarthatóságSebességGyártó függetlenség

19Programrendszerek fejlesztése

Page 20: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Java Persistence API

Java Community Program: JSR 317Entitá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

23.04.20. Programrendszerek fejlesztése 20

Page 21: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Entitás

@Entity + @IdMező vs. Tulajdonság hozzáférés

■ Mellékhatások (Mező+)

Tábla @Table■ Több tábla @SecondaryTable■ View■ Replikációs■ History

23.04.20. Programrendszerek fejlesztése 21

Page 22: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

ViszonyokViszonyok (egyirányú,

kétirányú)■ @OneToOne

(JoinTable, mappedBy)

■ @OneToMany (JoinColumn, JoinTable , mappedBy)

■ @ManyToOne (JoinTable)

■ @ManyToMany (JoinTable, mappedBy)

23.04.20. Programrendszerek fejlesztése 22

Page 23: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

23.04.20. 23Programrendszerek fejlesztése

Page 24: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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)

23.04.20. 24Programrendszerek fejlesztése

Page 25: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

25Programrendszerek fejlesztése

Page 26: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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.

23.04.20. 26Programrendszerek fejlesztése

Page 27: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Életciklus

Adatbázis vs. Gyorstár vs. MemóriaEntitás létrehozásaEntitás törléseSzinkronizálásFrissítésLecsatolt entitásokMenedzselt entitásokÁllapot betöltése

23.04.20. 27Programrendszerek fejlesztése

Page 28: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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()

23.04.20. 28Programrendszerek fejlesztése

Page 29: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

23.04.20. Programrendszerek fejlesztése 29

Page 30: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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

23.04.20. Programrendszerek fejlesztése 30

Page 31: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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.constrains – bővíthető

Idő + minta + érték

23.04.20. Programrendszerek fejlesztése 31

Page 32: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Lekérdező nyelv

SQL-hez hasonló de Objektum OrientáltLehetővé teszi az objektumgráfon lévő

elemek címzését

23.04.20. 32Programrendszerek fejlesztése

Page 33: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Hibernate

33Programrendszerek fejlesztése

Page 34: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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.

34Programrendszerek fejlesztése

Page 35: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

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ó.

35Programrendszerek fejlesztése

Page 36: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Perzisztencia

36Programrendszerek fejlesztése

Page 37: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Perzisztencia menedzserCRUDLekérdezésTranzakcióGyorstár

37Programrendszerek fejlesztése

Page 38: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Objektumok betöltéseAzonosító alapján

HQL

Kritérium alapján

Minta alapján

38Programrendszerek fejlesztése

Page 39: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

BetöltésLazy

■ Csak proxy

Batch■ Ha egy proxy-t fel kell oldani akkor többet is

felold

Eager■ Mindent betölt

39Programrendszerek fejlesztése

Page 40: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Optimalizálás - Gyorstárak

40Programrendszerek fejlesztése

Page 41: 10. Adatkezelés JPA-Hibernate

UN

IVER

SIT

Y O

F SZ

EG

ED

Dep

artm

ent o

f Sof

twar

e E

ngin

eeri

ng

UN

IVE

RS

ITA

S S

CIE

NT

IAR

UM

SZ

EG

ED

IEN

SIS

Tartalom JDBC

■ Connection■ Statements■ Resultset■ Tranasactions

JPA■ Entitás■ ORM■ Lekérdezések

Hibernate■ Betöltés■ Gyrostárak

23.04.20. 41Programrendszerek fejlesztése