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.