使用JPA @Transient批註忽略字段

1.簡介

當使用對象關係映射(ORM)框架將Java對象持久存儲到數據庫記錄中時,我們經常想忽略某些字段。如果框架符合Java Persistence API(JPA),則可以在這些字段中@Transient

在本教程中,我們將演示@Transient批註的正確用法。我們還將研究它與Java內置的transient關鍵字的關係。

2. @Transient註釋與transient關鍵詞

通常有一些困惑過關係@Transient註釋和Java的內置transient關鍵字。 transient關鍵字主要用於在Java對象序列化過程中忽略字段,但是它也可以防止在使用JPA框架時保留這些字段。

**換句話說,當保存到數據庫中時transient關鍵字的作用與@Transient但是,@ @Transient批註不會影響Java對象的序列化。
**

3. JPA @Transient示例

假設我們有一個User類,它是一個JPA實體,它映射到數據庫中的Users表。當用戶登錄時,我們從“用戶”表中檢索其記錄,然後在“ User實體上設置一些其他字段。這些多餘的字段與“用戶”表中的任何列都不對應,因為我們不想保存這些值。

User實體上設置一個時間戳,該時間戳表示用戶何時登錄其當前會話:

@Entity

 @Table(name = "Users")

 public class User {



 @Id

 private Integer id;



 private String email;



 private String password;



 @Transient

 private Date loginTime;



 // getters and setters

 }

當我們使用像Hibernate這樣的JPA提供程序User對象保存到數據庫時,由於@Transient批註loginTime

如果我們序列化此User對象並將其傳遞給系統中的另一個服務,則loginTime字段將包含在序列化中。如果我們不希望包括這個領域,我們可以更換@Transient與註釋transient關鍵字來代替:

@Entity

 @Table(name = "Users")

 public class User implements Serializable {



 @Id

 private Integer id;



 private String email;



 private String password;



 private transient Date loginTime;



 //getters and setters

 }

現在,在數據庫持久性和對象序列化期間loginTime

4。結論

在本文中,我們研究瞭如何在典型的用例中@Transient請務必查看有關JPA的其他文章,以了解有關持久性的更多信息。