Forskjellen mellom @JoinColumn og mappedBy

1. Introduksjon

JPA-forhold kan være enten ensrettet eller toveis. Det betyr ganske enkelt at vi kan modellere dem som en attributt på nøyaktig en av de tilknyttede enhetene eller begge deler.

Å definere retningen på forholdet mellom enheter har ingen innvirkning på databasekartleggingen. Den definerer bare retningene vi bruker det forholdet i domenemodellen vår.

For et toveis forhold definerer vi vanligvis:

  • eiersiden
  • invers eller den refererende siden

De @JoinColumn kommentar hjelper oss med å spesifisere kolonnen vi skal bruke for å bli med i en enhetsforening eller elementsamling. På den annen side, den kartlagt av attributt brukes til å definere referansesiden (ikke-eier side) av forholdet.

I denne raske opplæringen vil vi se på forskjellen mellom @JoinColumn og kartlagt avi JPA. Vi vil også presentere hvordan du bruker dem i en en-til-mange forening.

2. Første oppsett

For å følge med denne veiledningen, la oss si at vi har to enheter: Ansatt og E-post.

Det er klart at en ansatt kan ha flere e-postadresser. En gitt e-postadresse kan imidlertid tilhøre nøyaktig en enkelt ansatt.

Det betyr at de deler en en-til-mange-forening:

Også i vår RDBMS-modell har vi en utenlandsk nøkkel Ansatt ID i vår E-post enhet som refererer til id attributt av en Ansatt.

3. @JoinColumn Kommentar

I et forhold mellom en og mange / mange til en, eiersiden er vanligvis definert påmange' side av forholdet. Det er vanligvis siden som eier den utenlandske nøkkelen.

De @JoinColumn kommentar definerer at faktisk fysisk kartlegging på eiersiden:

@Entity offentlig klasse E-post {@Id @GeneratedValue (strategi = GenerationType.AUTO) privat Lang id; @ManyToOne (fetch = FetchType.LAZY) @JoinColumn (navn = "ansatt_id") privat ansatt ansatt; // ...}

Det betyr ganske enkelt at vår E-post enheten vil ha en utenlandsk nøkkelkolonne Ansatt ID med henvisning til det primære attributtet id av vår Ansatt enhet.

4. kartlagt av Egenskap

Når vi har definert eiersiden av forholdet, har Hibernate allerede all den informasjonen den trenger for å kartlegge forholdet i databasen vår. For å gjøre denne forbindelsen toveis, er alt vi trenger å gjøre å definere henvisningssiden. Den omvendte eller refererende siden kartlegges ganske enkelt til eiersiden.

Vi kan enkelt bruke kartlagt av attributt av @OneToMany kommentar for å gjøre det. Så la oss definere våre Ansatt enhet:

@Entity offentlig klasse Ansatt {@Id @GeneratedValue (strategi = GenerationType.AUTO) privat Lang id; @OneToMany (fetch = FetchType.LAZY, mappedBy = "ansatt") private e-postmeldinger; // ...}

Her, verdien av kartlagt av er navnet på assosiasjonskartleggingsattributtet på eiersiden. Med dette har vi nå etablert en toveis tilknytning mellom vår Ansatt og E-post enheter.

5. Konklusjon

I denne opplæringen så vi på forskjellen mellom @JoinColumn og kartlagt av og hvordan du bruker dem i et to-veis toveis forhold.

De @JoinColumn kommentar definerer den faktiske fysiske kartleggingen på eiersiden. På den annen side defineres referansesiden ved hjelp av kartlagt av attributt til @OneToMany kommentar.

Som vanlig er kildekoden tilgjengelig på Github.


$config[zx-auto] not found$config[zx-overlay] not found