ez a szócikk a hibernált öröklésről szól. Itt lesz disussing a különböző öröklési stratégia által támogatott hibernate, mint a Single Table stratégia, táblázat osztályonként stratégia és egyesített stratégia együtt azok előnyeit és hátrányait. Minden stratégiához kódmintákat készítünk, és részletesen megvitatjuk viselkedésüket.

háttér

mint tudjuk, a Java objektumorientált nyelv, ezért támogatja az öröklődést. A java öröklődésben lehet is-a vagy van-a kapcsolat. De amikor jön minden relációs modell, támogatja csak van-a kapcsolat. Ennek leküzdésére mimmatch hibernate biztosít különböző öröklési stratégia. Alapvetően 3 típusú hibernált stratégia létezik az alábbiak szerint.

1. Egyasztalos Stratégia

2. Táblázat Osztályonként Stratégia

3. Csatlakozott táblázat stratégia

most beszéljünk ezekről 3 stratégiák egyenként. Az alábbi példákban 3 különböző entitásunk van. A Employee.java anyavállalat 2 további entitással bővül PermanentEmployee.java és ContractEmployee.java

hibernált egyasztalos stratégia

egyasztalos stratégia esetén öröklési hierachiánként egyetlen tábla jön létre. Például, van alkalmazott osztály bővül 2 mások osztályok, de amikor a single table stratégia egyetlen tábla jön létre képviselő összes osztály per öröklési hieracy és ez a táblázat tartalmazza az összes kapcsolódó adatok akár alkalmazott vagy ContractEmployee vagy PermanentEmployee.

tehát felmerül a kérdés, mintha az összes bejegyzés egyetlen táblázatban készülne, akkor hogyan tudjuk azonosítani ezeket a sorokat az objektum szempontjából. Ehhez a hbernate egy Diszkriminátor típusú(DType) oszlopot biztosít, amely segít megkülönböztetni ezeket a rekordokat. Ez a konfiguráció teljesen annotáció alapú. Határozzuk meg tehát entitásainkat, és hajtsuk végre a hibernált öröklődést egyetlen táblázatos stratégiával.

 Other Interesting PostsSpring Hibernate Integration Example with JavaConfigObject Relational Mapping in JavaHibernate Different Annotations ExampleHibernate One to Many Mapping ExampleHibernate One to Many Relationship ExampleHibernate Many to Many Relationship Example

alkalmazott.java állandó munkatárs.java szerződéses alkalmazott.java

@Inheritance-a hibernate-ben használt öröklődés típusának meghatározására szolgál, és a szülő osztályban van meghatározva. Ha az öröklési annotáció nincs megadva, vagy ha az entitásosztály-hierarchiához nincs megadva öröklési típus, akkor a SINGLE_TABLE leképezési stratégiát kell használni.

@DiscriminatorValue – ez a megjegyzés a DType oszlop nevének megadására szolgál. Itt PERMANENT_EMP – ként határoztuk meg PermanentEmployee.java esetén és CONTRACT_EMPLOYEE – ként ContractEmployee.java esetén. A DiscriminatorValue annotáció csak egy konkrét entitásosztályon adható meg. Ha a diszkriminatív Típus STRING, akkor a diszkriminátor alapértelmezett értéke az entitás neve.

hibernálás meghatározása.KFG.xml

egyasztalos stratégia tesztelése

határozzuk meg az alkalmazást.java, amelynek fő metódusa van benne, hogy futtassa a példát, és nézze meg a DB

alkalmazásban létrehozott bejegyzéseket.java

ha az A osztályú java alkalmazás felett fut, akkor láthatja a DB-ben létrehozott bejegyzéseket. Mivel, nem határoztunk meg konkrét értéket a Dtype oszlop számára az alkalmazottban.java, alapértelmezés szerint hibernate nevezte entitás osztály neve.

az egyasztalos stratégia előnyei

a legegyszerűbb megvalósítani.

csak egy táblázat foglalkozik.

a teljesítmény bölcsebb, mint az összes stratégia, mert nem kell illesztéseket vagy részválasztásokat végrehajtani.

az Egytáblás stratégia hátrányai

a táblázat oszlopának nagy része nullázható, így a NOT NULL korlátozás nem alkalmazható.

táblázatok nem normalizált.

hibernált táblázat Osztálystratégiánként

abban az esetben, táblázat osztályonként stratégia, nincsenek. a pontos számmal egyenértékű táblázatok közül. az öröklési hierarchiában meghatározott konkrét entitások. Ezért a mi esetünkben 3 különböző tábla jön létre, és minden gyermek tábla tartalmazza a szülő duplikált adatait. Ezért ez a stratégia nem ajánlott. Nézzük újra ugyanazokat az entitásokat elhelyezésére táblázat osztályonként stratégia.

alkalmazott.java szerződéses alkalmazott.java állandó munkatárs.java

ebben az esetben nincs szükség a diszkriminátor oszlopra, mert minden entitásnak saját táblája van. Ebben a stratégiában osztályonként egy táblát használ, és mindegyiknek van azonosítója. Ezért az automatikus generációs típus itt nem működik.

Vizsgálati Táblázat Osztályonként Stratégia

Az Alkalmazás.a java változatlan marad. Futtassa ezt az osztályt java alkalmazásként, és ellenőrizze a DB-ben létrehozott bejegyzéseket osztálystratégiánként.

előnyei táblázat osztályonként stratégia

megadhatja Nem NULL megszorítások az asztalon.

hátrányai táblázat osztályonként stratégia

táblázatok nem normalizált.

a Select utasításoknak több időre van szükségük a végrehajtáshoz, amikor az Unió műveletet alkalmazzák.

Hibernate Joined Table Strategy

ebben a stratégiában a DB összes bejegyzése egy táblában jön létre, amely a szülő entitás megfelelő táblája, és a gyermek entitásoknak megfelelő táblák hivatkozni fognak rá. Ha ez összezavarja Önt, akkor először definiáljuk az entitásainkat, és gyorsan lássuk a DB struktúrát, hogy jobban megértsük.

alkalmazott.java szerződéses alkalmazott.java állandó munkatárs.java

az entitás definíciójának egyetlen változása itt a stratégia típusaEmployee.java

tesztelés csatlakozott táblázat stratégia

az alkalmazás.a java változatlan marad. Futtassa ezt az osztályt java alkalmazásként, és ellenőrizze a DB-ben létrehozott bejegyzéseket.

az egyesített Asztalstratégia előnyei

a táblázatok normalizálódnak.

megadhat Nem NULL korlátokat.

az egyesített Asztalstratégia hátrányai

alacsony teljesítmény, mivel külső csatlakozást, valamint belső csatlakozást futtat egyes stemekben.

következtetés

Posted on

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

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