Definiranje JPA entiteta

1. Uvod

U ovom uputstvu naučit ćemo o osnovama entiteta zajedno s raznim bilješkama koje definiraju i prilagođavaju entitet u JPA.

2. Entitet

Entiteti u JPA nisu ništa drugo do POJO-i koji predstavljaju podatke koji se mogu zadržati u bazi podataka. Entitet predstavlja tablicu pohranjenu u bazi podataka. Svaka instanca entiteta predstavlja red u tablici.

2.1. The Entitet Bilješka

Recimo da imamo POJO koji se zove Student koji predstavlja podatke učenika i željeli bismo ih pohraniti u bazu podataka.

javni razred Student {// polja, geteri i postavljači}

Da bismo to učinili, trebali bismo definirati entitet tako da JPA bude svjestan toga.

Dakle, definirajmo ga koristeći se @ Entitet bilješka. Ovu napomenu moramo navesti na razini predavanja. Također moramo osigurati da entitet ima konstruktor ne-arg i primarni ključ:

@Entity javni razred student {// polja, geteri i postavljači}

Naziv entiteta prema zadanim je postavkama naziv klase. Možemo mu promijeniti ime pomoću Ime element.

@Entity (name = "student") javni razred Student {// polja, getteri i postavljači}

Budući da će različite JPA implementacije pokušati podrazvrstati naš entitet kako bi osigurale njegovu funkcionalnost, klase entiteta ne smiju se deklarirati konačni.

2.2. The Iskaznica Bilješka

Svaki JPA entitet mora imati primarni ključ koji ga jedinstveno identificira. The @Iskaznica napomena definira primarni ključ. Identifikatore možemo generirati na različite načine koje navodi @GeneratedValue bilješka.

Možemo birati između četiri strategije generiranja id-a s strategija element. Vrijednost može biti AUTO, TABLICA, SEKVENCA, ili IDENTITET.

@ Entity javni razred Student {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; privatni naziv niza; // geteri i postavljači}

Ako preciziramo GenerationType.AUTO, JPA davatelj će koristiti bilo koju strategiju koju želi za generiranje identifikatora.

Ako označimo polja entiteta, JPA davatelj usluga će ih koristiti za dobivanje i postavljanje stanja entiteta. Osim terenskog pristupa, možemo raditi i pristup nekretninama ili mješoviti pristup, što nam omogućuje upotrebu i terenskog i imovinskog pristupa u istom entitetu.

2.3. The Stol Bilješka

U većini slučajeva, naziv tablice u bazi podataka i naziv entiteta neće biti isti.

U tim slučajevima možemo odrediti naziv tablice pomoću @Stol napomena:

@Entity @Table (name = "STUDENT") student javne klase {// polja, getteri i postavljači}

Shemu također možemo spomenuti pomoću shema element:

@Entity @Table (name = "STUDENT", schema = "SCHOOL") javni razred Student {// polja, getteri i postavljači}

Naziv sheme pomaže razlikovati jedan set tablica od drugog,

Ako ne koristimo @Stol napomena, naziv entiteta smatrat će se nazivom tablice.

2.4. The Stupac Bilješka

Baš kao i @Stol napomena, možemo koristiti @Stupac napomena za spominjanje detalja stupca u tablici.

The @Stupac bilješka ima mnogo elemenata kao što su ime, duljina, poništavajuće i jedinstveno.

@Entity @Table (name = "STUDENT") student javne klase {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Stupac (ime = "STUDENT_NAME", duljina = 50, nullable = false, unique = false) ime privatnog niza; // ostala polja, geteri i postavljači}

The Ime element navodi ime stupca u tablici. The duljina element određuje njegovu duljinu. The poništavajuće element određuje je li stupac null ili ne, a jedinstven element određuje je li stupac jedinstven.

Ako ne navedemo ovu napomenu, naziv polja smatrat će se nazivom stupca u tablici.

2.5. The Prolazno Bilješka

Ponekad, možda želimo učiniti polje nepostojanim. Možemo koristiti @Prijelazno napomena za to. Određuje da se polje neće zadržati.

Na primjer, možemo izračunati dob učenika od datuma rođenja.

Pa označimo polje dob s @Prijelazno napomena:

@Entity @Table (name = "STUDENT") student javne klase {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Stupac (ime = "STUDENT_NAME", duljina = 50, nullable = false) naziv privatnog niza; @Prijelazno privatno cijelo doba; // ostala polja, geteri i postavljači}

Kao rezultat toga, polje dob neće se zadržati na stolu.

2.6. The Vremenski Bilješka

U nekim ćemo slučajevima možda morati spremiti vremenske vrijednosti u našu tablicu.

Za to imamo @Temporal napomena:

@Entity @Table (name = "STUDENT") student javne klase {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Stupac (ime = "STUDENT_NAME", duljina = 50, nullable = false, unique = false) ime privatnog niza; @Prijelazno privatno cijelo doba; @Temporal (TemporalType.DATE) privatni Datum datum rođenja; // ostala polja, geteri i postavljači}

Međutim, s JPA 2.2 imamo i podršku za java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime, java.time.OffsetTime i java.time.OffsetDateTime.

2.7. The Nabrojano Bilješka

Ponekad ćemo možda htjeti ustrajati na Javi nabrajanje tip.

Možemo koristiti @Nabrojeno napomena za specificiranje da li nabrajanje treba postojati po imenu ili rednom broju (zadano).

javni popis Spol {MALE, FEMALE} 
@Entity @Table (name = "STUDENT") student javne klase {@Id @GeneratedValue (strategy = GenerationType.AUTO) private Long id; @ Stupac (ime = "STUDENT_NAME", duljina = 50, nullable = false, unique = false) ime privatnog niza; @Prijelazno privatno cijelo doba; @Temporal (TemporalType.DATE) privatni Datum datum rođenja; @Enumerated (EnumType.STRING) private Gender gender; // ostala polja, geteri i postavljači}

Zapravo, ne moramo navesti @Nabrojeno uopće ako želimo ustrajati na Spol od strane nabrajanje‘Redni.

Međutim, ustrajati na Spol po nabrajanje ime, konfigurirali smo napomenu sa EnumType.STRING.

3. Zaključak

U ovom smo članku saznali što su JPA entiteti i kako ih stvoriti. Također smo saznali o različitim bilješkama koje se mogu koristiti za daljnju prilagodbu entiteta.

Kompletni kôd za ovaj članak nalazi se na Githubu.