Hibernate Jpa Cascade Types

vi lærte om kartlegging av tilknyttede enheter i hibernate allerede i tidligere opplæringsprogrammer som en-til-en-kartlegging og en-til-mange-kartlegginger. Der ønsket vi å lagre den kartlagte enheten når relasjonseierenheten ble lagret. For å aktivere dette hadde vi bruk» CascadeType » attributt. I DENNE Jpa Cascade Typer opplæringen, vil vi lære om ulike typer tilgjengelige alternativer for cascading via CascadeType.

Hvordan JPA Cascade Typer Arbeid?

før du går videre, la oss se på hvordan denne kaskadetypeattributtet er definert i koden din. La oss få et eksempel for klarere forståelse. Ta et scenario der En Ansatt kan ha flere Kontoer; men en konto må være knyttet til bare en ansatt. La oss lage enheter med minimum informasjon for klarhets skyld.

Ansatte.java

Konto.java

Se på den dristige linjen i kildekoden ovenfor for EmployeeEntity.java. Det definerer «cascade=CascadeType.ALL » og det betyr i hovedsak at enhver endring skjedde påEmployeeEntity må kaskade tilAccountEntity også. Hvis du lagrer en ansatt, vil alle tilknyttede kontoer også bli lagret i databasen. Hvis Du sletter En Ansatt, slettes også alle kontoer knyttet til Den Ansatte. Enkelt nok.

Men hva om vi bare vil kaskade bare lagre operasjoner, men ikke slette operasjonen. Da må vi tydelig spesifisere det ved hjelp av under kode.

nå bare når lagre() eller vedvarer() metoder kalles ved hjelp av employee instance da bare kontoer vil vedvare. Hvis en annen metode kalles på økt, vil effekten ikke påvirke / kaskade til kontoer.

Jpa Kaskadetyper

kaskadetype som støttes av Java Utholdenhet Arkitekturen er som følger:

  1. CascadeType.PERSIST :cascade type presist betyr at lagre() eller vedvarer () operasjoner cascade til relaterte enheter.
  2. CascadeType.FLETTE : kaskadetype merge betyr at relaterte enheter slås sammen når den eiende enheten slås sammen.
  3. CascadeType.OPPDATER: cascade type refresh gjør det samme for refresh () – operasjonen.
  4. CascadeType.REMOVE: cascade type remove fjerner alle relaterte enheter tilknytning til denne innstillingen når eie enheten slettes.
  5. CascadeType.KOBLE fra: kaskadetype detach løsner alle relaterte enheter hvis det oppstår en «manuell frakobling».
  6. CascadeType.ALLE : kaskadetype all er forkortelse for alle ovennevnte kaskadeoperasjoner.

det er ingen standard kaskadetype I JPA. Som standard er ingen operasjoner kaskade.

alternativet kaskadekonfigurasjon godtar en rekke CascadeTypes; derfor, for å inkludere bare oppdaterer og fletter i kaskadeoperasjonen for en en-Til-Mange-relasjon som i vårt eksempel, kan du se følgende:

over cascading vil føre til at kontosamlingen bare slås sammen og oppdateres.

Hibernate Cascade Typer

nå kan vi forstå hva som er cascade i hibernate i hvilket scenario vi bruker det.Bortsett FRA JPA gitt kaskade typer, er det en mer gjennomgripende operasjon i dvalemodus som ikke er en del av den normale sett ovenfor diskutert, kalt «orphan fjerning». Dette fjerner et eid objekt fra databasen når det er fjernet fra eierforholdet.

La oss forstå med et eksempel. I Vårt Eksempel På Ansatt-og Kontoenhet har jeg oppdatert dem som nedenfor og har nevnt «orphanRemoval = true» på kontoer. Det betyr i hovedsak at når jeg fjerner en konto fra kontosett (som betyr at jeg fjerner forholdet mellom den kontoen og Ansatt); kontoenheten som ikke er knyttet til noen Annen Ansatt i databasen (dvs. foreldreløs), bør også slettes.

Ansatte.java

Konto.java

TestOrphanRemovalCascade.java

det er en veldig god måte å fjerne matchende / mismatching elementer fra en samling (dvs.mange-til-en eller en-til-mange relasjoner). Du bare fjerne elementet fra samlingen og hibernate ta vare på resten av tingene for deg. Det vil sjekke om enheten er referert fra noe sted eller ikke; Hvis det ikke er det, vil det slette enheten fra selve databasen.Gi meg beskjed om dine tanker og spørsmål om hibernate 5 cascade typer eller JPA cascade typer, hvis noen.

God Læring !!

Oracle Blogg på cascade typer

Var dette innlegget nyttig?

Gi oss beskjed hvis du likte innlegget. Det er den eneste måten vi kan forbedre oss på.
Ja

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.