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:

másolja az adott objektum állapotát az állandó objektumra ugyanazzal az azonosítóval. Ha jelenleg nincs állandó példány társítva a munkamenethez, akkor az betöltődik. Adja vissza az állandó példányt. Ha az adott példány nincs mentve, mentse el annak egy példányát, majd küldje vissza újonnan állandó példányként. Az adott példány nem kapcsolódik a munkamenethez. Ez a művelet a társított példányokhoz kaszkádol, ha az asszociáció a cascade=”merge”értékkel van leképezve.

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?

tudassa velünk, ha tetszett a bejegyzés. Csak így tudunk fejlődni.
Igen
Nem

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…

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.