tämä artikkeli käsittelee hibernate inheritancea. Tässä tulemme disussing eri perintöstrategia tukee hibernate kuten yhden pöydän strategia, taulukko per luokka strategia ja liittyi strategia sekä niiden edut ja haitat. Luomme koodinäytteitä jokaiselle strategialle ja keskustelemme niiden käyttäytymisestä yksityiskohtaisesti.

Tausta

kuten tiedämme, Java on oliopainotteinen kieli ja siten se tukee periytymistä. Javan perinnössä voi olla IS-a tai HAS-suhde. Mutta kun tulemme relaatiomalli, se tukee vain on-suhde. Voit voittaa tämän mimmatch hibernate tarjoaa erilaisen perintöstrategian. On periaatteessa 3 tyypit hibernate strategia seuraavasti.

1. Yhden Pöydän Strategia

2. Taulukko Per Luokka Strategia

3. Joined Table Strategy

nyt keskustellaan näistä 3 strategiasta yksi kerrallaan. Alla olevissa esimerkeissä meillä on 3 eri kokonaisuutta. Emoyhtiötä Employee.java on jatkamassa 2 muuta yksikköä PermanentEmployee.java ja ContractEmployee.java

Hibernate Single Table Strategy

jos kyseessä on yhden pöydän strategia, on luotu yksi taulukko perimyshierarkiaa kohden. Esimerkiksi meillä on Työntekijäluokkaa laajennetaan 2 muulla luokalla, mutta kun kyseessä on yhden pöydän strategia, luodaan yksi taulukko, joka edustaa kaikkia luokkia per perintö hieracy ja tämä taulukko sisältää kaikki tiedot, jotka liittyvät joko työntekijään tai Sopimustyöntekijään tai pysyvään työntekijään.

niin, herää kysymys, ikään kuin kaikki merkinnät tehdään yhdessä taulukossa sitten miten voimme tunnistaa nämä rivit objektin näkökulmasta. Tätä varten hbernate tarjoaa Discriminator Type(Dtype) – sarakkeen, joka auttaa erottamaan nämä tietueet toisistaan. Tämä kokoonpano on täysin selityksiin perustuva. Joten määrittelemme yhteisömme ja toteutamme hibernate-perinnön yhden pöydän strategialla.

 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

työntekijä.java pysyvä työntekijä.Jaavan sopimustyöntekijä.java

@Inheritance-sitä käytetään hibernatessa käytettävän perinnön tyypin määrittelyyn ja se määritellään vanhempaisluokassa. Jos perinnön merkintää ei ole määritetty tai jos entiteettiluokan hierarkialle ei ole määritetty perinnön tyyppiä, käytetään SINGLE_TABLE mapping-strategiaa.

@DiscriminatorValue – tätä huomautusta käytetään dtype-sarakkeen nimen määrittämiseen. Tässä on määritelty, että PERMANENT_EMP jos PermanentEmployee.java ja CONTRACT_EMPLOYEE jos ContractEmployee.java. DiscriminatorValue-merkintä voidaan määrittää vain konkreettiselle entiteettiluokalle. Jos DiscriminatorType on merkkijono, discriminator value default on entiteetin nimi.

määritellään hibernate.cfg.xml

Testing Single Table Strategy

Let us define Application.java, jonka sisällä on päätapa ajaa esimerkki ja nähdä sen luomat merkinnät dB

– sovelluksessa.java

jos suoritat A-luokan java-sovelluksen yläpuolella, näet dB: ssä luodut merkinnät. Koska, emme määrittele mitään erityistä arvoa Dtype sarake työntekijä.java, oletusarvoisesti hibernate nimesi sen entiteettiluokan nimeksi.

yhden pöydän strategian edut

yksinkertaisin toteuttaa.

vain yksi taulukko käsiteltävänä.

suoritus on parempi kuin kaikilla strategioilla, koska yhtymisiä tai alivalintoja ei tarvitse suorittaa.

yhden pöydän strategian haitat

suurin osa taulukon sarakkeesta on nollattavissa, joten ei-NOLLARAJOITETTA ei voida soveltaa.

taulukoita ei normalisoida.

Hibernate Table Per Luokka Strategia

jos kyseessä on taulukko per luokka strategia, ei ole. taulukoiden luotu vastaa tarkkaa no. konkreettisten oikeuksien määritelty perintö hierachy. Näin ollen meidän tapauksessamme on 3 eri taulukko luotu ja jokainen lapsi taulukko sisältää päällekkäisiä tietoja sen vanhemman. Siksi tätä strategiaa ei suositella. Määrittelkäämme uudelleen samat yksiköt, jotta voimme mukauttaa taulukon luokkakohtaista strategiaa.

työntekijä.Jaavan sopimustyöntekijä.java pysyvä työntekijä.java

tässä tapauksessa ei tarvita erottelusaraketta, koska kaikilla yhteisöillä on oma taulu. Tässä strategiassa käytetään yhtä pöytää per luokka ja jokaisella on ID. Näin ollen generation type auto ei toimi tässä.

Testaustaulukko Luokkastrategiaa Kohti

Sovellus.java pysyy muuttumattomana. Suorita tämä luokka java-sovelluksena ja tarkista tietueet luotu DB kohti taulukkoa per luokka strategia.

taulukon luokkakohtaiset edut strategia

voit määritellä taulukossa ei NOLLARAJOITUKSIA.

taulukon luokkakohtaisen strategian haitat

taulukoita ei normalisoida.

Select statements require more time to execute as UNION operation is applied.

Hibernate Joined Table Strategy

tässä strategiassa kaikki DB: n merkinnät luodaan yhteen taulukkoon, joka on emoyksikön vastaava taulukko, ja lapsiyksiköitä vastaavissa taulukoissa on viittaus siihen. Jos tämä hämmentää sinua, niin anna meidän määritellä meidän yksiköt ensin ja nähdä DB rakenne nopeasti ymmärtää paremmin.

työntekijä.Jaavan sopimustyöntekijä.java pysyvä työntekijä.java

ainoa muutos entiteettimääritelmässä on tässä määritelty strategiatyyppi Employee.java

testaus liittyi Taulukkostrategiaan

hakemus.java pysyy muuttumattomana. Suorita tämä luokka java-sovelluksena ja tarkista dB: ssä luodut merkinnät.

Joined Table-strategian edut

taulukot normalisoituvat.

voit määritellä ei NOLLARAJOITUKSIA.

Joined Table-strategian haitat

heikko suorituskyky, koska se kulkee ulompana liittimenä sekä sisempänä liittimenä tietyissä stenteissä.

johtopäätös

Posted on

Vastaa

Sähköpostiosoitettasi ei julkaista.