opimme yhdistettyjen yksiköiden kartoittamisesta hibernate jo aiemmissa opetusohjelmissa, kuten one-to-one mapping ja one-to-many mappings. Siellä halusimme pelastaa kartoitetun kokonaisuuden aina, kun parisuhteen omistaja-yhteisö pelastui. Tämän mahdollistamiseksi meillä oli käytössä ”CascadeType” – attribuutti. Tässä JPA Cascade tyypit opetusohjelma, opimme erilaisia käytettävissä vaihtoehtoja cascadetype kautta cascadetype.
miten JPA: n Kaskadityypit toimivat?
ennen kuin siirrytään eteenpäin, katsotaan, miten tämä kaskadityyppinen attribuutti määritellään koodissasi. Otetaan esimerkki selkeämmästä ymmärryksestä. Otetaan tilanne, jossa työntekijällä voi olla useita tilejä, mutta yhden tilin on liityttävä vain yhteen työntekijään. Luodaan kokonaisuuksia, joilla on mahdollisimman vähän tietoa selvyyden vuoksi.
Työllistyvyysaste.java
tilinteko.java
Katso yllä olevaa lihavoitua riviä lähdekoodille EmployeeEntity.java
. Siinä määritellään ”cascade=CascadeType.ALL
” ja se tarkoittaa käytännössä sitä, että kaikki muutokset tapahtuivat EmployeeEntity
täytyy tapahtua myös AccountEntity
. Jos tallennat työntekijän, kaikki siihen liittyvät tilit tallennetaan myös tietokantaan. Jos poistat työntekijän, kaikki kyseiseen työntekijään liittyvät tilit myös poistetaan. Yksinkertaista.
mutta mitä jos haluamme vain ryöpyttää vain operaatioita, mutta emme poistaa operaatiota. Sitten meidän täytyy selkeästi määrittää se käyttämällä alla koodia.
nyt vain kun tallenna() tai säily () – menetelmiä kutsutaan käyttäen työntekijän instanssia, vain tilit säilyvät. Jos jokin muu menetelmä kutsutaan istuntoon, sen vaikutus ei vaikuta/cascade tileille.
Javan Pysyvyysarkkitehtuurin tukemat KASKADITYYPIT
alla olevat kaskadityypit:
- Kaskadityypit.Jatkuvat: cascade type
presist
tarkoittaa, että save() tai continue() operations cascade to related entities. - CascadeType.YHDISTÄÄ : kaskadityyppi
merge
tarkoittaa, että toisiinsa liittyvät yhteisöt sulautuvat, kun omistava yhteisö yhdistetään. - CascadeType.REFRESH: cascade type
refresh
tekee saman asian refresh () – operaatiolle. - CascadeType.Poista: cascade type
remove
poistaa kaikki tähän asetukseen liittyvät entiteetit, kun omistava entiteetti poistetaan. - CascadeType.DETACH: kaskadityyppi
detach
irrottaa kaikki asiaan liittyvät yksiköt, jos tapahtuu ”manuaalinen irrotus”. - CascadeType.KAIKKI : kaskadityyppi
all
on pikakirjoitus kaikille edellä mainituille kaskadioperaatioille.
yhteisessä parlamentaarisessa edustajakokouksessa ei ole oletuskaskadityyppiä. Oletusarvoisesti mitään toimintoja ei ryöpytetä.
cascade-asetusvalinta hyväksyy joukon Cascadetyyppejä; näin ollen, jos cascade-operaatioon sisällytetään vain yksi yhteen-suhde, kuten esimerkissämme, saatat nähdä seuraavaa:
cascadingin yläpuolella aiheuttaa tilikokoelman vain yhdistämisen ja päivittämisen.
Hibernate Cascade-tyypit
antaa nyt ymmärtää, mikä on cascade horrostilassa, missä skenaariossa käytämme sitä.
yhteisen parlamentaarisen edustajakokouksen toimittamien kaskadityyppien lisäksi horrostilassa on vielä yksi kaskadioperaatio, joka ei kuulu edellä mainittuun normaaliin sarjaan, nimeltään ”orpojen poisto”. Tämä poistaa omistetun objektin tietokannasta, kun se poistetaan omistussuhteestaan.
ymmärretään esimerkin avulla. Työntekijämme ja Tiliyhteisömme esimerkissä olen päivittänyt ne alla olevaan tapaan ja maininnut” orphanRemoval = true ” tileillä. Se tarkoittaa käytännössä sitä, että aina kun poistan ”tilin tilijoukosta” (eli poistan kyseisen tilin ja työntekijän välisen suhteen), myös tiliyhteisö, joka ei ole yhteydessä mihinkään muuhun tietokantaan kirjattuun työntekijään (eli orvoon), olisi poistettava.
Työllistyvyysaste.java
tilinteko.java
TestOrphanRemovalCascade.java
se on erittäin hyvä tapa poistaa vastaavat / Yhteensopimattomat kohteet kokoelmasta (eli monesta yhteen tai yhdestä moneen suhteeseen). Voit vain poistaa kohteen kokoelmasta ja talviunille huolehtia loput asiat puolestasi. Se tarkistaa, onko entiteetti on viitattu mistä tahansa paikasta tai ei; jos se ei ole niin se poistaa entiteetti tietokannasta itse.
kerro ajatuksesi ja kysymyksesi hibernate 5 cascade-tyypeistä tai JPA cascade-tyypeistä, jos sellaisia on.
onnellista oppimista !!
Oracle-blogi kaskadityypeistä
oliko tästä postauksesta apua?