samenvoegen en vernieuwen van entiteiten

in vorige tutorial hebben we geleerd over het opslaan van entiteiten met behulp van save() of saveOrUpdate() methoden in hibernate. Daar hebben we geleerd dat in de meeste gevallen, zult u niet eens nodig die methoden als hibernate beheert de updates op persistente entiteiten automatisch. In de meeste gevallen hoeft u alleen maar om voorbijgaande objecten te geven. In deze tutorial bespreek ik enkele gedachten rond refresh() en merge() methode aanwezig in hibernate sessie klasse.

Hibernate entiteiten verversen met behulp van refresh () methode

soms worden we geconfronteerd met een situatie waarin we applicatiedatabase is gewijzigd met een externe toepassing / agent en dus overeenkomstige hibernate entiteit in uw toepassing daadwerkelijk niet synchroon loopt met zijn database representatie, dat wil zeggen het hebben van oude gegevens. In dit geval kunt u de session.refresh() methode gebruiken om de entiteit opnieuw te vullen met de nieuwste gegevens die beschikbaar zijn in de database.

u kunt een van de refresh() methoden op de sessie interface gebruiken om een instantie van een persistent object te vernieuwen, als volgt:

public void refresh(Object object) throws HibernateExceptionpublic void refresh(Object object, LockMode lockMode) throws HibernateException

deze methoden herladen de eigenschappen van het object uit de database en overschrijven ze. In echte toepassingen hoeft u niet vaak de refresh() – methode te gebruiken, afgezien van het bovenstaande scenario.

laten we eens kijken naar een voorbeeld van refresh() methode.

kijk boven de gemarkeerde regels.

  • regel 15 sla de werknemer op met de voornaam “Lokesh”
  • regel 26 stel de voornaam “Vikas”in. Aangezien de entiteit is ontkoppeld, zal DB niet worden bijgewerkt.
  • regel 27 ververs de entiteit met de database met behulp van refresh() methode.
  • regel 32 controleer of de voornaam die is ingesteld in de entiteit is bijgewerkt met “Lokesh” omdat het is welke database dit moment heeft.

Dit ging allemaal over de refresh methode. Laten we een andere soortgelijke methode merge()zoeken.

het samenvoegen van Hibernate entiteiten met behulp van merge () methode

methode merge() doet precies het tegenovergestelde van wat refresh() doet, d.w.z. het werkt de database bij met waarden van een losstaande entiteit. Refresh methode was het bijwerken van de entiteit met de nieuwste database-informatie. Dus in principe zijn beide precies het tegenovergestelde.

samenvoegen wordt uitgevoerd wanneer u een losstaande entiteit opnieuw wilt laten veranderen in permanente status, waarbij de wijzigingen van de losstaande entiteit worden gemigreerd naar (of vervangen) de database. De methode handtekeningen voor de samenvoeging operaties zijn:

Object merge(Object object)Object merge(String entityName, Object object)

Hibernate officiële documentatie geeft een zeer goede uitleg van merge() methode:

kopieer de status van het gegeven object naar het permanente object met dezelfde identifier. Als er momenteel geen persistent exemplaar is geassocieerd met de sessie, zal het worden geladen. Geef de persistent instantie terug. Als de opgegeven instantie niet is opgeslagen, sla dan een kopie op en retourneer het als een nieuw persistent exemplaar. De gegeven instantie wordt niet geassocieerd met de sessie. Deze operatie cascades naar geassocieerde instanties als de associatie is toegewezen met cascade= “merge”.

dus als ik bijvoorbeeld onderstaande code neem, dan moeten onderstaande punten duidelijk zijn voor u.

EmployeeEntity mergedEmpEntity = session.merge(empEntity);
  • ‘empEntity’ is losgekoppelde entiteit wanneer het wordt doorgegeven aan merge () methode.
  • merge() methode zal zoeken naar een reeds geladen EmployeeEntity instantie met identifier informatie uit empEntity. Als een dergelijke persistente entiteit wordt gevonden dan zal het worden gebruikt voor updates. Andere wijze een nieuwe EmployeeEntity wordt geladen in sessie met behulp van dezelfde identifier informatie als aanwezig in ‘empEntity’.
  • gegevens worden gekopieerd van’ empEntity ‘ naar nieuwe gevonden/geladen entiteit.
  • omdat nieuwe / gevonden entiteit persistent is, worden alle gegevens die vanuit ‘empEntity’ naar deze entiteit worden gekopieerd automatisch opgeslagen in de database.
  • referentie van die nieuwe entiteit wordt geretourneerd uit de merge () – methode en wordt toegewezen aan de variabele “mergedemptity”.
  • “empEntity” is nog steeds een niet-verbonden entiteit.

in het bovenstaande voorbeeld is ‘mergedpersistentemptity’ een nieuwe entiteit die persistent is. Dus als je nog meer wilt veranderen, maak dan in ‘mergedPersistentEmpEntity’ instantie.

dat is alles voor deze tutorial met merge() en refresh() methoden in de slaapstand. Onthoud dat de vraag gesteld kan worden als verschil tussen merge() en refresh(), of verschil tussen merge() en load() enz. Wees klaar om een dergelijk verschil tussen interview vragen tegenkomen.

Gelukkig Leren !!

Was dit bericht nuttig?

laat ons weten of u de post leuk vond. Dat is de enige manier waarop we kunnen verbeteren.
Ja
Nee

in vorige tutorial hebben we geleerd over het opslaan van entiteiten met behulp van save() of saveOrUpdate() methoden in hibernate. Daar hebben we geleerd dat in de meeste gevallen, zult u niet eens nodig die methoden als hibernate beheert de updates op persistente entiteiten automatisch. In de meeste gevallen hoeft u alleen maar om voorbijgaande…

in vorige tutorial hebben we geleerd over het opslaan van entiteiten met behulp van save() of saveOrUpdate() methoden in hibernate. Daar hebben we geleerd dat in de meeste gevallen, zult u niet eens nodig die methoden als hibernate beheert de updates op persistente entiteiten automatisch. In de meeste gevallen hoeft u alleen maar om voorbijgaande…

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.