Hibernate egyesülő és frissítő entitások
az előző oktatóanyagban megtanultuk az entitások mentését a save()
vagy saveOrUpdate()
módszerekkel a hibernate programban. Ott megtudtuk, hogy a legtöbb esetben nem is lesz szüksége ezekre a módszerekre, mivel a hibernate automatikusan kezeli az állandó entitások frissítéseit. A legtöbb esetben csak átmeneti tárgyakkal kell törődnie. Ebben az oktatóanyagban néhány gondolatot tárgyalok a refresh()
és a merge()
metódus körül, amely a hibernate session osztályban található.
Refreshing Hibernate entitások segítségével refresh () módszer
néha szembe helyzet, amikor alkalmazás adatbázis módosul néhány külső alkalmazás / ügynök, és így megfelelő hibernate entitás az alkalmazás valóban lesz szinkronban ez adatbázis képviselet, azaz miután a régi adatokat. Ebben az esetben a session.refresh()
módszerrel újra feltöltheti az entitást az adatbázisban elérhető legfrissebb adatokkal.
a munkamenet-felületen található refresh() metódusok egyikével frissítheti az állandó objektum egy példányát, az alábbiak szerint:
public void refresh(Object object) throws HibernateExceptionpublic void refresh(Object object, LockMode lockMode) throws HibernateException
ezek a módszerek újratöltik az objektum tulajdonságait az adatbázisból, felülírva azokat. A valós életben alkalmazások, akkor nem kell használni a refresh()
módszer nagyon gyakran eltekintve fent említett forgatókönyv.
nézzünk egy példát a refresh () módszerre.
nézze meg a kiemelt sorok felett.
- 15.sor mentse el a “Lokesh”utónévvel rendelkező alkalmazottat
- 26. sor állítsa be a “Vikas”utónevet. Mivel az entitás leválasztásra kerül, a DB nem frissül.
- 27.sor frissítse az entitást az adatbázissal
refresh()
módszerrel. - 32.sor ellenőrizze, hogy az entitásban beállított keresztnév frissült-e “Lokesh” – vel, mivel ez az adatbázis rendelkezik ebben a pillanatban.
Ez a frissítési módszerről szólt. Nézzünk egy másik hasonló módszert merge()
.
hibernált entitások egyesítése a merge() metódussal
metódus merge()
pontosan ellentétes azzal, amit refresh()
tesz, azaz frissíti az adatbázist egy leválasztott entitás értékeivel. A frissítési módszer az entitás frissítése volt a legújabb adatbázis-információkkal. Tehát alapvetően mindkettő pontosan ellentétes.
az összevonás akkor történik meg, ha egy leválasztott entitást újra állandó állapotba kíván változtatni, miközben a leválasztott entitás módosításai átkerülnek (vagy felülbírálják) az adatbázist. Az egyesítési műveletek metódusaláírásai a következők:
Object merge(Object object)Object merge(String entityName, Object object)
a Hibernate hivatalos dokumentációja nagyon jó magyarázatot ad a merge()
módszerre:
tehát ha például az alábbi kódot veszem, akkor az alább felsorolt pontoknak világosnak kell lenniük.
EmployeeEntity mergedEmpEntity = session.merge(empEntity);
- ’empEntity’ leválasztott entitás, amikor átadják a merge () metódusnak.
- a merge() metódus egy már betöltött EmployeeEntity példányt keres az empEntity-ből vett azonosító információkkal. Ha ilyen állandó entitás található, akkor a frissítésekhez használják. Más bölcs az új EmployeeEntity betöltődik a munkamenetbe ugyanazon azonosító információk felhasználásával, mint az ’empEntity’.
- az adatok az ’empEntity’ – ből az új megtalált/betöltött entitásba kerülnek.
- mivel az új/talált entitás állandó, az ’empEntity’ – ből rá másolt összes adat automatikusan az adatbázisba kerül.
- az új entitás hivatkozása a merge() metódusból kerül visszaadásra, és a ‘mergedEmpEntity’ változóhoz van rendelve.
- az’empEntity’ még mindig különálló entitás.
a fenti példában a ‘mergedPersistentEmpEntity’ új entitás, amely állandó. Tehát, ha azt szeretnénk, hogy bármilyen további változás, majd, hogy a ‘mergedPersistentEmpEntity’ például.
Ez minden a bemutató, amely merge()
és refresh()
módszerek hibernált. Ne feledje, hogy ez a kérdés a merge()
és refresh()
közötti különbség, vagy a merge()
és load()
közötti különbség stb. Legyen kész arra, hogy bármilyen ilyen különbséggel szembesüljön az interjú kérdései között.
Boldog Tanulást !!
hasznos volt ez a bejegyzés?
az előző oktatóanyagban megtanultuk az entitások mentését a save() vagy saveOrUpdate() módszerekkel a hibernate programban. Ott megtudtuk, hogy a legtöbb esetben nem is lesz szüksége ezekre a módszerekre, mivel a hibernate automatikusan kezeli az állandó entitások frissítéseit. A legtöbb esetben csak átmeneti tárgyakkal kell törődnie. Ebben az oktatóanyagban néhány gondolatot tárgyalok a refresh() és a…
az előző oktatóanyagban megtanultuk az entitások mentését a save() vagy saveOrUpdate() módszerekkel a hibernate programban. Ott megtudtuk, hogy a legtöbb esetben nem is lesz szüksége ezekre a módszerekre, mivel a hibernate automatikusan kezeli az állandó entitások frissítéseit. A legtöbb esetben csak átmeneti tárgyakkal kell törődnie. Ebben az oktatóanyagban néhány gondolatot tárgyalok a refresh() és a…