Våren JPA @ Embedded og @ EmbeddedId

1. Oversikt

I denne opplæringen skal vi dekke bruken av @EmbeddedId kommentar og “findBy”Metode for spørring av en sammensatt nøkkelbasert JPA-enhet.

Derfor vi skal bruke @EmbeddeId og @ Embeddable merknader for å representere sammensatte nøkler i JPA-enheter. Vi må også bruke våren JpaRepository for å oppnå målet vårt.

Vi konsentrerer oss om å spørre etter objekter ved delvis primærnøkkel.

2. Behov for @Embeddable og @EmbeddedId

I programvare kommer vi over mange brukstilfeller når vi trenger å ha en sammensatt primærnøkkel for å definere en oppføring i en tabell. Sammensatte primærnøkler er nøkler som bruker mer enn en kolonne for å identifisere en rad i tabellen unikt.

Vi representerer en sammensatt primærnøkkel i vårdata ved å bruke @Embeddable kommentar på en klasse. Denne nøkkelen blir deretter innebygd i tabellens tilsvarende enhetsklasse som den sammensatte primærnøkkelen ved å bruke @EmbeddedId kommentar på et felt av @Embeddable type.

3. Eksempel

Vurder a bok bord, hvor en bok posten har en sammensatt primærnøkkel som består av forfatter og Navn. Noen ganger vil vi kanskje finne bøker av en del av hovednøkkelen. For eksempel vil en bruker kanskje bare søke etter bøker av en bestemt person forfatter. Vi lærer hvordan du gjør dette med JPA.

Vår primære applikasjon vil bestå av en @Embeddable BookId og @Entity Book med @EmbeddedId BookId.

3.1. @Embeddable

La oss definere vår BookId klasse i denne delen. De forfatter og Navn vil spesifisere en unik BookId - klassen er det Serialiserbar og implementerer begge deler er lik og hashCode metoder:

@Embeddable public class BookId implementerer Serializable {private String author; privat strengnavn; // standard getters og setters}

3.2. @Enhet og @EmbeddedId

Våre Bok enhet har @EmbeddedIdBookId og andre felt relatert til en bok. BookId forteller JPA at den Bok enhet har en sammensatt nøkkel:

@Entity public class Book {@EmbeddedId private BookId id; privat String sjanger; privat Heltallpris; // standard getters og setter}

3.3. JPA Repository and Method Naming

La oss raskt definere JPA-depotgrensesnittet vårt ved å utvide JpaRepository med enhet Bok i tillegg til BookId:

@Repository offentlig grensesnitt BookRepository utvider JpaRepository {List findByIdName (strengnavn); Liste findByIdAuthor (strengforfatter); }

Vi bruker en del av id variabelens feltnavn for å utlede våre Spring Data-spørringsmetoder. Derfor tolker JPA den delvise primære nøkkelforespørselen som:

findByIdName -> direktiv "findBy" felt "id.navn" findByIdAuthor -> direktiv "findBy" felt "id.author"

4. Konklusjon

JPA kan brukes til å effektivt kartlegge sammensatte nøkler og spørre dem via avledede spørsmål.

I denne artikkelen så vi et lite eksempel på å kjøre et delvis ID-feltsøk. Vi så på @Embeddable merknad for å representere den sammensatte primærnøkkelen og @EmbeddedId kommentar for å sette inn en sammensatt nøkkel i en enhet.

Til slutt så vi hvordan bruke JpaRepositoryfindBy avledede metoder for å søke med delvise ID-felt.

Som alltid er eksempelkoden for denne opplæringen tilgjengelig på GitHub.


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