Mezők figyelmen kívül hagyása a JPA @Transient Annotation segítségével

1. Bemutatkozás

Amikor egy objektum-relációs leképezés (ORM) keretrendszer segítségével Java objektumokat tárolunk adatbázis-rekordokba, gyakran szeretnénk figyelmen kívül hagyni bizonyos mezőket. Ha a keretrendszer megfelel a Java Persistence API-nak (JPA), akkor hozzáadhatjuk a @ Átmeneti megjegyzés ezekhez a mezőkhöz.

Ebben az oktatóanyagban bemutatjuk a @ Átmeneti annotáció. Megvizsgáljuk a Java beépített kapcsolatát is átmeneti kulcsszó.

2. @ Átmeneti Megjegyzés vs. átmeneti Kulcsszó

Általában némi zavar van a @ Átmeneti annotáció és a Java beépített átmeneti kulcsszó. A átmeneti kulcsszó elsősorban a mezők figyelmen kívül hagyására szolgál a Java objektumok sorosítása során, de megakadályozza ezeknek a mezőknek a megőrzését is JPA keretrendszer használatakor.

Más szavakkal, a átmeneti kulcsszónak ugyanaz a hatása, mint a @ Átmeneti annotáció adatbázisba mentéskor. Azonban a @ Átmeneti az annotáció nem befolyásolja a Java objektumok sorosítását.

3. JPA @ Átmeneti Példa

Tegyük fel, hogy van egy Felhasználó osztály, amely egy JPA entitás, amely az adatbázisunk Felhasználók táblájához társít. Amikor egy felhasználó bejelentkezik, lekérjük a rekordot a Felhasználók táblából, majd további mezőket állítunk be a Felhasználó entitás utána. Ezek az extra mezők nem felelnek meg a Felhasználók táblázat egyetlen oszlopának sem, mert nem akarjuk elmenteni ezeket az értékeket.

Például beállítunk egy időbélyeget a Felhasználó entitás, amely azt jelenti, amikor a felhasználó bejelentkezett az aktuális munkamenetbe:

@Entity @Table (name = "Users") public class User {@Id private Integer id; privát karakterlánc e-mail; privát karakterlánc jelszó; @ Átmeneti privát dátum loginTime; // szerelők és beállítók}

Amikor ezt mentjük Felhasználó objektumot az adatbázisba egy olyan JPA szolgáltató segítségével, mint a hibernálás, a szolgáltató figyelmen kívül hagyja a loginTime mező miatt @ Átmeneti annotáció.

Ha ezt sorosítjuk Felhasználó objektumot és továbbítja a rendszerünk egy másik szolgáltatásának, a loginTime mező kerül a sorosításba. Ha nem akarjuk felvenni ezt a mezőt, akkor cserélhetjük a @ Átmeneti annotáció a átmeneti kulcsszó helyett:

@Entity @Table (name = "Users") public class Felhasználó végrehajtja a Serializable {@Id private Integer azonosítót; privát karakterlánc e-mail; privát karakterlánc jelszó; privát tranziens Dátum loginTime; // szerelők és beállítók}

Most a loginTime mezőt figyelmen kívül hagyják az adatbázis-perzisztencia és az objektum sorosítása során.

4. Következtetés

Ebben a cikkben megvizsgáltuk a Közös Parlamenti Közgyűlés megfelelő használatát @ Átmeneti annotáció tipikus használati esetben. Feltétlenül olvassa el a JPA-ról szóló további cikkeket, hogy többet tudjon meg a kitartásról.

Mint mindig, a cikk teljes forráskódja elérhető a GitHubon.