Proljetni JPA @Embedded i @EmbeddedId

1. Pregled

U ovom uputstvu pokriti ćemo upotrebu @EmbeddedId bilješka i “pronađiBy”Metoda za postavljanje složenog JPA entiteta temeljenog na ključu.

Stoga koristit ćemo @EmbeddeId i @ Ugradivo napomene koje predstavljaju složene ključeve u JPA entitetima. Također moramo koristiti Proljeće JpaRepository da postignemo svoj cilj.

Koncentrirat ćemo se na ispitivanje objekata djelomičnim primarnim ključem.

2. Potreba za @Embeddable i @EmbeddedId

U softveru nailazimo na brojne slučajeve korištenja kada trebamo imati složeni primarni ključ za definiranje zapisa u tablici. Sastavljeni primarni ključevi su ključevi koji koriste više od jednog stupca za jedinstveno prepoznavanje retka u tablici.

Kompozitni primarni ključ predstavljamo u Spring Data pomoću @Embeddable napomena na predavanju. Taj je ključ zatim ugrađen u odgovarajuću klasu entiteta tablice kao složeni primarni ključ pomoću @EmbeddedId bilješka na polju @Embeddable tip.

3. Primjer

Razmotrite a knjiga stol, gdje a knjiga zapis ima složeni primarni ključ koji se sastoji od Autor i Ime. Ponekad bismo možda željeli pronaći knjige dijelom primarnog ključa. Na primjer, korisnik bi možda želio tražiti knjige samo po određenoj osobi Autor. Naučit ćemo kako to učiniti s JPA.

Naša primarna aplikacija sastojat će se od @Embeddable BookId i @Entity Book s @EmbeddedId BookId.

3.1. @Embeddable

Definirajmo svoje BookId razreda u ovom odjeljku. The Autor i Ime odredit će jedinstveni BookId - razred je Serijalizirati i provodi oboje jednako i hashCode metode:

@Embedvable javna klasa BookId implementira Serializable {private String author; privatni naziv niza; // standardni geteri i postavljači}

3.2. @ Entitet i @EmbeddedId

Naše Knjiga entitet ima @EmbeddedIdBookId i druga polja vezana uz a knjiga. BookId kaže JPA da Knjiga entitet ima složeni ključ:

@ Entity public class Book {@EmbeddedId private BookId id; privatni žanr žica; privatna cijela cijena; // standardni geteri i postavljači}

3.3. JPA spremište i imenovanje metoda

Dopustite nam da brzo definiramo naše sučelje JPA spremišta proširujući JpaRepository s entitetom Knjiga kao i BookId:

@Repository javno sučelje BookRepository proširuje JpaRepository {List findByIdName (naziv niza); Popis findByIdAuthor (autor niza); }

Koristimo dio iskaznica Imena polja varijable za izvedbu naših metoda upita Spring Data. Stoga JPA upit za djelomični primarni ključ tumači kao:

findByIdName -> direktiva "findBy" polje "id.name" findByIdAuthor -> direktiva "findBy" polje "id.author"

4. Zaključak

JPA se može koristiti za učinkovito mapiranje složenih ključeva i njihovo postavljanje upita putem izvedenih upita.

U ovom smo članku vidjeli mali primjer izvođenja djelomičnog pretraživanja polja id. Pogledali smo @Embeddable napomena koja predstavlja složeni primarni ključ i @EmbeddedId napomena za umetanje složenog ključa u entitet.

Napokon smo vidjeli kako koristiti JpaRepositorypronađiBy izvedene metode za pretraživanje s djelomičnim id poljima.

Kao i uvijek, primjer koda za ovu lekciju dostupan je na GitHubu.


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