Hibernate JPA Cascade Types

Vi lærte om kortlægning af tilknyttede enheder i hibernate allerede i tidligere tutorials som en-til-en kortlægning og en-til-mange kortlægninger. Der ønskede vi at gemme den kortlagte enhed, når forholdet ejer enhed blev gemt. For at aktivere dette havde vi brug “CascadeType” attribut. I denne JPA Cascade Types tutorial lærer vi om forskellige typer tilgængelige muligheder for cascading via CascadeType.

hvordan JPA Cascade typer arbejde?

før vi går videre, lad os se på, hvordan denne kaskadetypeattribut er defineret i din kode. Lad os få et eksempel for mere klar forståelse. Tag et scenario, hvor en medarbejder kan have flere konti; men en konto skal kun være tilknyttet en medarbejder. Lad os oprette enheder med minimal information af hensyn til klarhed.

Medarbejderenhed.java

AccountEntity.java

se på den dristige linje i ovenstående kildekode for EmployeeEntity.java. Det definerer”cascade=CascadeType.ALL“og det betyder i det væsentlige, at enhver ændring skete på EmployeeEntity skal kaskade til AccountEntity også. Hvis du gemmer en medarbejder, gemmes alle tilknyttede konti også i databasen. Hvis du sletter en medarbejder, slettes alle konti, der er knyttet til den pågældende medarbejder, også. Simpelt nok.

men hvad nu hvis vi kun vil kaskade kun gemme operationer, men ikke slette operation. Så skal vi tydeligt angive det ved hjælp af nedenstående kode.

nu kun når Gem() eller vedvarende() metoder kaldes ved hjælp af medarbejderinstans, vil kun konti blive vedvarende. Hvis en anden metode kaldes på session, vil dens effekt ikke påvirke / kaskade til konti.

JPA Cascade typer

de kaskade typer understøttes af Java Persistens arkitektur er som nedenfor:

  1. CascadeType.Vedvarende: cascade type presist betyder, at gemme() eller fortsætte() operationer kaskade til relaterede enheder.
  2. CascadeType.FUSIONERE : kaskadetype merge betyder, at relaterede enheder flettes, når den ejende enhed flettes.
  3. CascadeType.REFRESH: cascade type refresh gør det samme for refresh() operationen.
  4. CascadeType.REMOVE: cascade type remove fjerner alle relaterede enheder tilknytning til denne indstilling, når den ejende enhed slettes.
  5. CascadeType.DETACH : cascade type detach løsner alle relaterede enheder, hvis der opstår en” manuel detach”.
  6. CascadeType.ALLE : kaskadetype all er stenografi for alle ovennævnte kaskadeoperationer.

Der er ingen standard kaskadetype i JPA. Som standard er ingen operationer kaskade.

indstillingen kaskadekonfiguration accepterer en række Cascadetyper; hvis du således kun inkluderer opdateringer og fusioner i kaskadeoperationen for en en-til-mange-relation som i vores eksempel, kan du muligvis se følgende:

ovenfor kaskade vil medføre, at kontoindsamling kun flettes og opdateres.

Hibernate Cascade typer

lad os nu forstå, hvad der er cascade i hibernate i hvilket scenario vi bruger det.

bortset fra JPA leverede kaskadetyper, er der endnu en kaskadeoperation i dvaletilstand, som ikke er en del af det normale sæt ovenfor diskuteret, kaldet “forældreløs fjernelse”. Dette fjerner et ejet objekt fra databasen, når det fjernes fra dets ejerforhold.

lad os forstå med et eksempel. I vores eksempel på medarbejder-og Kontoenhed har jeg opdateret dem som nedenfor og nævnt “orphanRemoval = true” på konti. Det betyder i det væsentlige, at når jeg fjerner en ‘konto fra kontosæt’ (hvilket betyder, at jeg fjerner forholdet mellem denne konto og medarbejder); kontoenheden, der ikke er tilknyttet nogen anden medarbejder i databasen (dvs.forældreløs), skal også slettes.

Medarbejderenhed.java

AccountEntity.java

TestOrphanRemovalCascade.java

det er en meget god måde at fjerne de matchende/uoverensstemmende elementer fra en samling (dvs.mange-til-en eller en-til-mange relationer). Du skal bare fjerne varen fra indsamling og dvale tage sig af resten af tingene for dig. Det vil kontrollere, om der henvises til enhed fra ethvert sted eller ej; hvis det ikke er det, vil det slette enheden fra selve databasen.

Lad mig vide om dine tanker og spørgsmål om hibernate 5 cascade typer eller JPA cascade typer, hvis nogen.

glad læring !!

Oracle Blog on cascade types

var dette indlæg nyttigt?

fortæl os, hvis du kunne lide indlægget. Det er den eneste måde, vi kan forbedre.
Ja
Nej

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.