Jarné JPA @Embedded a @EmbeddedId

1. Prehľad

V tomto výučbe sa budeme zaoberať používaním @EmbeddedId anotácia a „nájsťBy”Metóda na dopytovanie entity JPA založenej na zloženom kľúči.

Preto budeme používať @EmbeddeId a @ Vložené anotácie predstavujúce zložené kľúče v entitách JPA. Musíme tiež použiť jar JpaRepository dosiahnuť náš cieľ.

Budeme sa sústrediť na dopytovanie objektov čiastkovým primárnym kľúčom.

2. Potreba @Embeddable a @EmbeddedId

V softvéri sa stretávame s mnohými prípadmi použitia, keď potrebujeme mať zložený primárny kľúč na definovanie záznamu v tabuľke. Zložené primárne kľúče sú kľúče, ktoré používajú viac ako jeden stĺpec na jednoznačnú identifikáciu riadku v tabuľke.

Zložený primárny kľúč v Spring Data reprezentujeme pomocou znaku @Embeddable anotácia k triede. Tento kľúč je potom vložený do zodpovedajúcej triedy entity tabuľky ako zložený primárny kľúč pomocou znaku @EmbeddedId anotácia k poľu @Embeddable typu.

3. Príklad

Zvážte a kniha stôl, kde a kniha záznam má zložený primárny kľúč pozostávajúci z autor a názov. Niekedy by sme možno chceli nájsť kníh časťou primárneho kľúča. Používateľ by napríklad mohol chcieť vyhľadávať knihy iba podľa konkrétneho autor. Dozvieme sa, ako to urobiť pomocou JPA.

Naša primárna aplikácia bude pozostávať z @Embeddable BookId a @ Entity Book s @EmbeddedId BookId.

3.1. @Embeddable

Definujme si svoje BookId triedy v tejto časti. The autor a názov uvedie jedinečný BookId - trieda je Serializovateľné a realizuje oboje rovná sa a hashCode metódy:

@Embeddable verejná trieda BookId implementuje Serializable {private String author; súkromné ​​meno reťazca; // štandardné getre a setre}

3.2. @Entity a @EmbeddedId

Náš Kniha subjekt má @EmbeddedIdBookId a ďalšie polia súvisiace s a kniha. BookId hovorí JPA, že Kniha entita má zložený kľúč:

@Entity public class Book {@EmbeddedId private BookId id; súkromný žáner String; cena za celé číslo; // štandardné getre a setre}

3.3. Repozitár JPA a pomenovanie metód

Poďme rýchlo definovať naše rozhranie úložiska JPA rozšírením JpaRepository s entitou Kniha ako aj BookId:

@ Verejné rozhranie úložiska BookRepository rozširuje JpaRepository {List findByIdName (názov reťazca); Zoznam findByIdAuthor (autor reťazca); }

Používame časť id názvy polí premennej na odvodenie metód dotazu Spring Data. Preto JPA interpretuje čiastočný dopyt primárneho kľúča ako:

findByIdName -> smernica "findBy" pole "id.name" findByIdAuthor -> smernica "findBy" pole "id.author"

4. Záver

JPA možno použiť na efektívne mapovanie zložených kľúčov a ich dopytovanie prostredníctvom odvodených dotazov.

V tomto článku sme videli malý príklad spustenia čiastočného vyhľadávania poľa id. Pozreli sme sa na @Embeddable anotácia, ktorá predstavuje zložený primárny kľúč a @EmbeddedId anotácia na vloženie zloženého kľúča do entity.

Nakoniec sme videli, ako na to Použi JpaRepositorynájsťBy odvodené metódy hľadať s čiastočnými poľami id.

Vzorový kód tohto tutoriálu je ako vždy k dispozícii na GitHub.


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