Ignorovanie polí s anotáciou JPA @Transient
1. Úvod
Keď perzistujeme objekty Java do záznamov v databáze pomocou rámca ORM (Object-Relational Mapping), často chceme určité polia ignorovať. Ak je rámec kompatibilný s Java Persistence API (JPA), môžeme pridať @ Prechodné anotácia k týmto poliam.
V tomto výučbe si ukážeme správne použitie @ Prechodné anotácia. Pozrime sa tiež na jeho vzťah so zabudovanou Java prechodný kľúčové slovo.
2. @ Prechodné Anotácia vs. prechodný Kľúčové slovo
Vzťahy medzi: @ Prechodné anotácia a vstavaná Java prechodný kľúčové slovo. The prechodný kľúčové slovo je primárne určené na ignorovanie polí počas serializácie objektov Java, ale tiež bráni tomu, aby tieto polia boli pretrvávajúce pri použití rámca JPA.
Inými slovami, prechodný kľúčové slovo má rovnaký účinok ako @ Prechodné anotácia pri ukladaní do databázy. Avšak @ Prechodné anotácia nemá vplyv na serializáciu objektov Java. Povedzme, že máme Používateľ triedy, čo je entita JPA, ktorá sa mapuje na tabuľku Users v našej databáze. Keď sa užívateľ prihlási, získame jeho záznam z tabuľky Používatelia a potom nastavíme niekoľko ďalších polí na Používateľ subjekt neskôr. Tieto ďalšie polia nezodpovedajú žiadnym stĺpcom v tabuľke Používatelia, pretože tieto hodnoty nechceme uložiť. Napríklad nastavíme časovú pečiatku na Používateľ entita, ktorá predstavuje, keď sa používateľ prihlási na svoju aktuálnu reláciu: Keď toto uložíme Používateľ objekt do databázy pomocou poskytovateľa JPA ako Hibernate, poskytovateľ ignoruje loginTime pole kvôli @ Prechodné anotácia. Keby sme to serializovali Používateľ namietajte a odovzdajte ho inej službe v našom systéme, loginTime pole bude zahrnuté do serializácie. Ak by sme toto pole nechceli zahrnúť, mohli by sme nahradiť @ Prechodné anotácia s prechodný kľúčové slovo namiesto toho: Teraz loginTime pole je ignorované počas perzistencie databázy a serializácie objektov. V tomto článku sme skúmali, ako správne používať JPA @ Prechodné anotácia v typickom prípade použitia. Nezabudnite si prečítať ďalšie články o JPA, kde sa dozviete viac o vytrvalosti. Celý zdrojový kód článku je ako vždy k dispozícii na GitHub.3. JPA @ Prechodné Príklad
@Entity @Table (name = "Users") verejná trieda User {@Id private Integer id; súkromný reťazcový e-mail; súkromné reťazcové heslo; @ Prechodný súkromný dátum loginTime; // zakladatelia a zakladatelia}
@Entity @Table (name = "Users") verejná trieda Používateľ implementuje Serializable {@Id private Integer id; súkromný reťazcový e-mail; súkromné reťazcové heslo; súkromný prechodný dátum loginTime; // zakladatelia a zakladatelia}
4. Záver