拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 使用JPA @Transient批注忽略字段

使用JPA @Transient批注忽略字段

白鹭 - 2021-11-24 665 0 0

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的其他文章,以了解有关持久性的更多信息。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *