10. adatkezelés jpa-hibernate
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 PresentationTRANSCRIPT
![Page 1: 10. Adatkezelés JPA-Hibernate](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/26.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/27.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/28.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/29.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/30.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/31.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/32.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/33.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/34.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/35.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/36.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/37.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/38.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/39.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/40.jpg)
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](https://reader035.vdocuments.net/reader035/viewer/2022062422/56813cd8550346895da67b40/html5/thumbnails/41.jpg)
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