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. 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: 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č: Sada, loginTime polje se ignorira tijekom trajanja baze podataka i serializacije objekta. 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.3. JPA @Prijelazno Primjer
@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}
@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}
4. Zaključak