Zanemarivanje polja s napomenom JPA @ Transient

1. Uvod

Kad istrajavamo u Java objektima u zapisima baze podataka koristeći objektno-relacijsko mapiranje (ORM), često želimo zanemariti određena polja. Ako je okvir u skladu s Java Persistent API (JPA), možemo dodati @Prijelazno napomena za ova polja.

U ovom uputstvu pokazat ćemo pravilno korištenje @Prijelazno bilješka. Također ćemo se osvrnuti na njegov odnos s ugrađenom Javom prolazan ključna riječ.

2. @Prijelazno Bilješka vs. prolazan Ključna riječ

Općenito postoji određena zbrka oko odnosa između @Prijelazno napomena i ugrađena Java prolazan ključna riječ. The prolazan Ključna riječ prvenstveno je namijenjena zanemarivanju polja tijekom serializacije Java objekata, ali također sprječava postojanje tih polja kada se koristi JPA okvir.

Drugim riječima, prolazan ključna riječ ima isti učinak kao i @Prijelazno napomena prilikom spremanja u bazu podataka. Međutim @Prijelazno napomena ne utječe na serializaciju Java objekata.

3. JPA @Prijelazno Primjer

Recimo da imamo a Korisnik klase, koja je JPA entitet koji se preslikava na tablicu Korisnici u našoj bazi podataka. Kada se korisnik prijavi, dohvatimo njegov zapis iz tablice Korisnici, a zatim postavimo neka dodatna polja na Korisnik entitet poslije. Ova dodatna polja ne odgovaraju nijednom stupcu u tablici Korisnici jer ne želimo spremiti ove vrijednosti.

Na primjer, postavićemo vremensku oznaku na Korisnik entitet koji predstavlja kada se korisnik prijavio u svoju trenutnu sesiju:

@Entity @Table (name = "Users") korisnik javne klase {@Id private Integer id; privatni String e-mail; privatna lozinka za niz; @Prijelazni privatni datum loginTime; // geteri i postavljači}

Kad ovo spremimo Korisnik prigovara bazi podataka pomoću JPA davatelja poput hibernacije, davatelj ignorira loginTime polje zbog @Prijelazno bilješka.

Ako ovo serializiramo Korisnik objekt i proslijedite ga drugoj službi u našem sustavu, loginTime polje bit će uključeno u serializaciju. Ako ne bismo željeli uključiti ovo polje, mogli bismo zamijeniti @Prijelazno napomena uz prolazan umjesto toga ključna riječ:

@Entity @Table (name = "Users") javna klasa Korisnik implementira Serializable {@Id private Integer id; privatni String e-mail; privatna lozinka za niz; privatni prijelazni datum LoginTime; // geteri i postavljači}

Sada, loginTime polje se ignorira tijekom trajanja baze podataka i serializacije objekta.

4. Zaključak

U ovom smo članku istražili kako pravilno koristiti JPA @Prijelazno napomena u tipičnom slučaju upotrebe. Svakako pogledajte druge članke o JPA kako biste saznali više o ustrajnosti.

Kao i uvijek, puni izvorni kôd članka dostupan je na GitHub-u.


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