Anotácia JPA @Basic

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na JPA @Základné anotácia. Budeme tiež diskutovať o rozdiele medzi @Základné a @ Stĺpec Anotácie JPA.

2. Základné typy

JPA podporuje rôzne dátové typy Java ako perzistentné polia entity, často známe ako základné typy.

Základný typ sa mapuje priamo na stĺpec v databáze. Patria sem primitívne Java a ich obalové triedy, String, java.math.BigInteger a java.math.BigDecimal, rôzne dostupné triedy dátumu a času, enumy a akýkoľvek iný implementovaný typ java.io. Serializovateľné.

Hibernate, ako každý iný predajca ORM, vedie register základných typov a používa ho na vyriešenie konkrétnych údajov stĺpca. org.hibernate.type.Type.

3. @Základné Anotácia

Môžeme použiť @Základné anotácia na označenie vlastnosti základného typu:

Kurz @Entity public class {@Basic @Id private int id; @ Základné súkromné ​​meno reťazca; ...}

Inými slovami, the @Základné anotácia na poli alebo vlastnosti znamená, že ide o základný typ a režim dlhodobého spánku by mal na svoju perzistenciu používať štandardné mapovanie.

Upozorňujeme, že ide o voliteľnú anotáciu. A tak môžeme prepísať ten náš Samozrejme subjekt ako:

@Entity kurz verejnej triedy {@Id private int id; súkromné ​​meno reťazca; ...}

Keď neurčíme @Základné anotácia pre atribút základného typu, implicitne sa predpokladá, a použijú sa predvolené hodnoty tejto anotácie.

4. Prečo používať @Základné Anotácia?

The @Základné anotácia má dva atribúty, voliteľné a aportovať. Poďme sa na každú z nich pozrieť bližšie.

The voliteľné atribút je a boolovský parameter, ktorý definuje, či to označené pole alebo vlastnosť umožňuje nulový. Predvolené je pravda. Ak teda pole nie je primitívnym typom, predpokladá sa, že je to podkladový stĺpec nullable predvolene.

The aportovať atribút prijíma člena výčtu Načítať, ktoré určuje, či má byť označené pole alebo vlastnosť lenivo načítané alebo nedočkavo načítané. Predvolené je FetchType.EAGER, ale môžeme povoliť lenivé načítanie nastavením na FetchType.LAZY.

Lenivé načítanie bude mať zmysel iba vtedy, keď budeme mať veľké Serializovateľné objekt mapovaný ako základný typ, pretože v takom prípade môžu byť náklady na prístup do poľa značné.

Máme podrobný návod, ktorý sa zaoberá načítaním dychtivosti / lenivosti v režime dlhodobého spánku, a ktorý sa hlbšie ponorí do tejto témy.

Teraz, povedzme, nechceme dovoliť nuly pre naše Samozrejme‘S názov a chcieť lenivo naložiť aj túto vlastnosť. Potom si zadefinujeme naše Samozrejme subjekt ako:

@Entity kurz verejnej triedy {@Id private int id; @Basic (voliteľné = false, fetch = FetchType.LAZY) súkromné ​​meno reťazca; ...}

Mali by sme výslovne použiť znak @Základné poznámky, ak sú ochotné odchýliť sa od predvolených hodnôt voliteľné a aportovaťparametre. Podľa našich potrieb môžeme určiť jeden alebo obidva tieto atribúty.

5. JPA @Základné vs @ Stĺpec

Pozrime sa na rozdiely medzi nimi @Základné a @ Stĺpec anotácie:

  • Atribúty @Základné poznámky sa aplikujú na entity JPA, zatiaľ čo atribúty @ Stĺpec sa aplikujú na stĺpce databázy
  • @Základné anotácie voliteľné atribút definuje, či môže byť pole entity nulový alebo nie; na druhej strane, @ Stĺpec anotácie nullable atribút určuje, či môže byť zodpovedajúci stĺpec databázy nulový
  • Môžeme použiť @Základné na označenie toho, že pole by malo byť lenivo načítané
  • The @ Stĺpec anotácia nám umožňuje určiť názov stĺpca mapovanej databázy

6. Záver

V tomto článku sme sa dozvedeli, kedy a ako sa majú používať dohody JPA @Základné anotácia. Hovorili sme aj o tom, v čom sa líši od @ Stĺpec anotácia.

Ako obvykle sú príklady kódov k dispozícii na stránkach Github.


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